묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션
cors 테스트 addExposedHeader("Authorization); 안해줘도 토큰 값이 받아집니다.
SecurityConfig에 아래 코드를 추가해야 configuration.addExposedHeader("Authorization");JwtToken 값을 받을 수 있다고 하셨는데요.해당 라인을 추가 안해도 JwtToken 값이 찍히고 로컬 스토리지와 세션 스토리지에 토큰값이 들어가지네요. 굳이 추가 안해도 되는건가요?
-
미해결Practical Testing: 실용적인 테스트 가이드
Stream 잘하고 싶어요
안녕하세요 강의 잘 듣고 있습니다.저도 우빈님처럼 람다, 스트림을 잘 쓰고 싶습니다!어떻게 공부하면 좋을지 알려주실 수 있나요?
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
1편과 2편의 차이점?
2편을 먼저 구매하여 수강중입니다. 1편과 겹치는 내용이 많다고 하셨는데, 1편을 보면 2편과는 다른 무언가를 얻을 수 있나요?
-
미해결Practical Testing: 실용적인 테스트 가이드
Fixture 사용에 있어서...
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 이렇게 사용해도, 하나의 도메인에 여러 Builder Fixture가 생기게 될까요? public class Fixture { public static ProductBuilder aProduct() { return Product.builder() .productNumber("001") .name("아메리카노") .price(1000) .type(ProductType.HANDMADE) .sellingStatus(ProductSellingStatus.SELLING); }} final LocalDateTime registeredDate = LocalDateTime.now();final Product product1 = createProduct(ProductType.HANDMADE, "001", 1000);final Product product2 = createProduct(ProductType.HANDMADE, "002", 3000);final Product product3 = createProduct(ProductType.HANDMADE, "003", 5000);final Product product4 = Fixture.aProduct().productNumber("004").price(7000).build();
-
미해결Practical Testing: 실용적인 테스트 가이드
@AfterEach 에서 tearDown 할 경우
안녕하세요! 좋은 강의 감사드립니다. 많은 도움이 되었어요.한 가지 궁금한 점이 있는데요. 실무를 하면서 개발용 DB에 이미 다른 테스트용 row 가 저장되어 있을 때 tearDown으로 deleteAllInBatch를 사용하게 되면 해당 테스트에서 추가된 데이터뿐만 아니라 모든 데이터가 전부 삭제되는 것으로 알고 있는데 이러한 상황을 원치 않는다면 직접 하나하나 수동 삭제해 주거나 Transactional 롤백을 사용하고 계신지 궁금합니다.
-
미해결스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션
컨트롤러에서 api/admin 으로 왔을 때 처리하는 원리가 궁금해요
안녕하세요 초보 개발자 입니다. 강의 너무 잘 듣고 있어요! 궁금한 점이 있어서 질문 드립니다.security 필터를 다 거치고 Controller에서 주소가 api/admin이면 Authentication객체의 role이 ADMIN인지 확인 한다고 하셨는데, securityConfig의 antMatchers("/api/admin/**").hasRole("" + UserEnum.ADMIN) 이부분에서 설정 했다고 생각합니다. 궁금한 점이 꼭 Authentication객체에서 ADMIN을 가지고 있는 변수의 이름이 꼭 role이여야만 가능 한걸까요? security에서 api/admin이 나오면 Authentication객체 내부에서 role이란 이름을 가진 변수를 찾아보는 걸까요? 아니면 해당사항을 설정한 사항이 따로 있었을까요?답변 감사합니다!
-
해결됨Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
파일 옆에 "100%클래스, ..." 라는 문구 뜨게 하는 방법
강사님 처럼 위 사진처럼 파일 옆에 "100% 메서드, ..." 와 같은 문구를 프린트 하고 싶은 어떤 플러그인 사용중 이신 지 알 수 있을까요?
-
미해결Practical Testing: 실용적인 테스트 가이드
6-1 @Query 부분
org.springframework.dao.InvalidDataAccessApiUsageException: 에 대해서 ...org.springframework.dao.InvalidDataAccessApiUsageException:,For queries with named parameters you need to use provide names for method parameters.,Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.;,nested exception is java.lang.IllegalStateException:,For queries with named parameters you need to use provide names for method parameters.,Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.강사님은 아래와 같이 @Param 을 붙여주지 않았는데도 에러가 안나셨는데 혹시 어떤 설정을 제가 놓친걸까요 .. ?@Repository public interface OrderRepository extends JpaRepository<Order, Long> { @Query("select o from Order o where o.registeredDateTime >= :startDateTime" + " and o.registeredDateTime < :endDateTime" + " and o.orderStatus = :orderStatus") List<Order> findOrdersBy(@Param("startDateTime") LocalDateTime startDateTime, @Param("endDateTime") LocalDateTime endDateTime, @Param("orderStatus") OrderStatus orderStatus); }
-
미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
curl -X 매개변수를 찾을 수 없습니다
윈도우 11에서 강의를 수강중입니다.Hello World를 찍기위해 curl -X GET 'localhost:3000'을 하면 아래와 같이 뜹니다. cs의 터미널, 파워쉘에서 했을 때 똑같이 이렇게 뜨고 크롬에서 localhost:3000으로 했을 때 Hello World가 찍히는걸 보면 실행은 제대로 되었는데 왜 이렇게 뜰까요? 구글링 해도 잘 나오지 않아 질문합니다. curl -X GET 'localhost:3000' Invoke-WebRequest : 매개 변수 이름 'X'과(와) 일치하는 매개 변수를 찾을 수 없습니다. 위치 줄:1 문자:6 + curl -X GET 'localhost:3000' + ~~ + CategoryInfo : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
-
미해결Practical Testing: 실용적인 테스트 가이드
클라우드 환경에서 테스트할 때 디비 사용법이 궁금해요
GitHub Actions을 사용하여 우분투 가상환경 위에서 스프링 부트 프로젝트를 빌드할 일이 있었는데요. 빌드 과정에서 테스트를 실행하는 단계가 있더라구요! application-test.yml에서 사용할 db의 정보를 지정하는 부분에 로컬 호스트 디비를 사용했는데 우분투 가상환경에서 테스트가 수행되다보니로컬호스트 디비와 연결하는 과정에서 커넥션 에러가 뜨더라구요 ㅠㅠ 이런 경우에선 테스트 환경에서 인메모리 디비를 사용해야 하나요..??어떤 방법이 최선인지 궁금해서 질문 남기게 되었습니다!
-
해결됨Practical Testing: 실용적인 테스트 가이드
'외부 계층으로 분리한다'는 말이 궁금합니다.
강의에서 LocalDateTime.now()를 파라미터로 받게끔 해서 분리하는 걸 예시로 들어주셨는데요.'테스트하기 어려운 영역을 외부 계층으로 분리한다'는 말씀이 위 예시처럼 파라미터로 받게끔한다는 것인가요?외부 계층이라는 말이 잘 이해되지 않아서 질문드립니다! 테스트하기 어려운 메서드를 호출하는 상위 레벨의 메서드를 외부 계층이라고 하는 것일까요?
-
미해결Practical Testing: 실용적인 테스트 가이드
DTO 분리에 관련된 질문이 있습니다.
안녕하세요. 강의 잘 듣고 있습니다.만약에 Service를 Write / Read 로 나눠서 관리를 한다고 하면Service 패키지쪽의 DTO도 나눠서 생성을 하시나요?아니면 그 부분은 같이 사용하시는 편인가요?
-
미해결스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션
사용자로 하여금 어떻게 JWT를 헤더에 포함하게 하나요?
jwt 부분을 다 듣고 아래 테스트 수업 듣는 중입니다.사용자 로그인 시에 우리가 jwt를 발급하고,사용자가 매 요청마다 이걸 가져오면 검증하는 건이해가 됐습니다.그러다 문득 궁금해진 게, 저희가 테스트할 때는포스트맨을 통해 헤더의 Authorization에 토큰을직접 넣어주었습니다. 하지만 실제 어플리케이션에선사용자가 직접 이 작업을 하지는 않죠.그렇다면 사용자 요청 헤더의 Authorization에 토큰을포함해야 하는 건 서버 측에서 해야할 일 같은데이에 대한 강의는 없는 것 같습니다. 혹시 자세하게는아니라도 대충 어떠하게 흘러가는 지 알려주실 수있을까요??
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
데이터가 2번 호출되는 문제
동일하게 코드를 작성해보았는데 fetchPosts 함수가 2번 실행되어 포스트 리스트에 데이터가 2번 중복으로 들어갑니다.강의에서도 19분 12초를 보니 2번 호출이 되는 것으로 보입니다. useEffect(() => { dispatch(fetchPosts()); }, [dispatch]);이 부분이 2번 실행되는 문제 같아서 버튼 클릭할 때 fetchPosts 함수를 dispatch하는 방식으로 바꾸었더니 데이터가 1번만 요청됩니다. const handleClick = () => { dispatch(fetchPosts()); };useEffect를 사용해서 페이지 접속 시 자동으로 데이터가 1번만 호출되게 하고 싶은데 어떻게 수정해야 할까요? useEffect(() => { dispatch(fetchPosts()); }, []);이렇게 수정해도 2번 실행됩니다..ㅠㅠ
-
미해결Practical Testing: 실용적인 테스트 가이드
인자값을 LocalDateTime을 전달받는 경우 통합테스트에서는 어떻게 처리 되나요?
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요.안녕하세요. 강의를 열심히 보고 있는 수강자입니다.다름이 아니라 이번 강의를 보면서 궁금한 점이 있는데요! LocalDateTime을 인자값으로 전달받아 단위테스트하기 좋게 리팩토링하셨는데, 나중에 createOrder를 호출하는 객체의 통합테스트를 진행할때는 시간에 대한 테스트코드를 어떻게 처리하는지 궁금합니다.예를 들어 CafeKioskRunner에서 main 메서드를 통합 테스트한다고 했을 때 시간에 따라 createOrder에서 성공 또는 exception이 발생할 것 같아서 이것에 대한 통합테스트를 어떻게 처리하는지 궁금합니다.감사합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
수강 내용 포스팅 관련 질문 드립니다.
평소에도 기록하는 습관이 있어 개발자로서 학습을 진행하거나 개발자로서 무언가 했던 행동들을 포스팅하여 기록해나가고 있는 신입개발자입니다. 혹시 강의 관련해서 수강한 내용을 바탕으로 강의 출처 및 링크 남기고 포스팅을 해도 되는지 질문 드립니다. 강의 내에서 사용한 이미지나, 코드 같은 것들은 사용하지 않고 테스트에 관련되어 강의 해주신 개념이나, 샘플 소스는 따로 공부한 내용을 바탕으로 제작하여 포스팅 할 예정입니다. 불가능하다면 노션으로 기록하여 PDF 보관할 예정입니다.
-
해결됨Practical Testing: 실용적인 테스트 가이드
Business Layer(3) 51:56 에 단축키 질문드립니다.
안녕하세요 선생님!51:56 쯤에 쓰시는 일정범위로 스크롤하시면서 select 하는 단축키가 어떤 건지 여쭤보고 싶습니다!강의 화면에 단축키가 안 뜨고, Intellij Keymap 에서 Selection 관련해서 계속 찾아봤는데도 잘 안 보이네요 🥲좋은 강의 감사드립니다 :)
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
axios 설치 오류
안녕하세요!npm install axios --save 명령어로 axios를 설치하였는데이런 문구가 나왔습니다. 혹시 설치가 안된것인가요? 그 이후에 수업을 진행하여"이미지 배너 만들기" 수업을 듣고 코드를작성 후 실행을 하니 영화에 정보가 나오지 않고이런 오류들이 나옵니다.api 키도 사이트에서 잘 가져왔는데.. 혹시 axios 설치가 안되어서 나오는 오류 일까요?
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
window.removeEventListener("scroll", () => {});
안녕하세요 강사님🙇♀️다름이 아니라, removeEventListener와 관련되어 질문이 있습니다. 1. window.removeEventListener("scroll", () => {});에서 함수 부분에 아무것도 적어주지 않았는데, 빈 함수를 전달한다면 어떤걸 의미하는건가요? addEventListener과 같은 함수를 적어줘야 하지 않나요?처음 리액트를 공부하는 거라, 많이 부족합니다ㅠㅠ 바쁘시겠지만 도움주시면 감사하겠습니다!(아래는 참고자료 겸 전체코드 첨부드립니다.)import React, { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import "./Nav.css"; export default function Nav() { const [show, setShow] = useState(false); const [searchValue, setSearchValue] = useState(""); const navigate = useNavigate(); useEffect(() => { window.addEventListener("scroll", () => { console.log("window.scrollY", window.scrollY); if (window.scrollY > 50) { setShow(true); } else { setShow(false); } }); return () => { window.removeEventListener("scroll", () => {}); }; }, []); const handleChange = (e) => { setSearchValue(e.target.value); navigate(`/search?q=${e.target.value}`); }; return ( <nav className={`nav ${show && "nav__black"} `}> <img alt="Netflix logo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/08/Netflix_2015_logo.svg/170px-Netflix_2015_logo.svg.png" className="nav__logo" onClick={() => (window.location.href = "/")} /> <input value={searchValue} onChange={handleChange} className="nav__input" type="text" placeholder="영화를 검색해주세요." /> <img alt="User logged" src="https://occ-0-4796-988.1.nflxso.net/dnm/api/v6/K6hjPJd6cR6FpVELC5Pd6ovHRSk/AAAABbme8JMz4rEKFJhtzpOKWFJ_6qX-0y5wwWyYvBhWS0VKFLa289dZ5zvRBggmFVWVPL2AAYE8xevD4jjLZjWumNo.png?r=a41" className="nav__avatar" /> </nav> ); }
-
해결됨Practical Testing: 실용적인 테스트 가이드
ActiveProfiles("test")를 대체할 수 있는 다른 방법이 있을까요?
안녕하세요 선생님, 먼저 좋은 강의 감사드립니다. 로컬환경과 테스트 환경을 별도로 관리해주기 위해서, test 프로파일을 사용하는 것은 이해했습니다.그런데, 이렇게 되면 모든 클래스에 ActiveProfiles 를 붙여줘야하니 다소 번거로울 것 같습니다.제가 생각한 방법으로는 SpringBootTest와 ActiveProfiles를 묶는 어노테이션을 별도로 만들고, 만든 어노테이션을 이용해볼 것 같습니다.혹시 ActiveProfiles 를 대체하기 위한 또 다른 방법은 어떤 것들이 있을까요?좋은 강의 감사드립니다 :)