Problem1
[문제]
- 테스트코드에서 Repository에서 findByEmail()메서드를 실행하면 Member객체를 반환하도록 했다. 하지만 이 과정에서 NullPointException이 발생했다.
Mockito.*when*(memberRepository.findByEmail(signUpForm.getEmail())).thenReturn(Optional.*of*(member));
[해결방법]
- service 클래스에 목객체를 주입할 때 구현체가 아닌 인터페이스에 주입을 해서 발생한 문제이다. 그래서 인터페이스가 아닌 구현체에 주입하도록 수정하여 했다.
Problem2
[문제]
컨트롤러 테스트코드 작성중 JpaAuditingHandler에 의한 에러 발생
[해결]
- WebMvcTest같은 슬라이스 테스트를 수행할 경우 별도로 Import를 하지 않으면 Jpa와 연관된 Bean들을 로드하지 못한다. 그래서 @EnableJpaAuditing에서 필요로하는 JPA Bean들을 등록하지 못하는 것이다.
- MockBean으로 직접 등록하는 방법과 @Configuration으로 분리시키는 방법이 있는데 전자의 방법은 매번 작성해 주어야 한다는 번거로움이 있어서 후자의 방법으로 해결했다.
Problem3
[문제]
컨트롤러 테스트코드 작성중 403, 401에러 방생
- 403 에러 : csrf로 인한 에러
- csrf 공격을 막기위해 서버에서 HTTP Request에 있는 csrf토큰값과 세션에 저장되어있는 토큰값을 비교해서 일치하는 경우에만 요청에대한 처리과정을 진행하도록 한다. 그런데 csrf토큰 값을 넣어주지 않았기 때문에 403 에러가 발생한것이다. POST 요청에서는 csrf검증을 하지만 GET 요청에서는 검증을 하지 않는다.