Mockito와 BDDMockito 둘 다 Java 기반의 테스트 프레임워크로, 모킹(mocking)을 지원한다. 이 둘은 기능상에 차이점은 없으나, 모킹하는 스타일 방식이 차이가 있다.1. Mockito를 통해 Mock 객체 생성하는 방법@Mock 애너테이션을 통해 Mock 객체를 생성하고, @InjectMocks 애너테이션을 통해 Mock 객체를 주입할 수 있다. 예를 들어, MailService 객체를 생성하기 위해서 MailSendClient와 MailSendHistoryRepository가 필요하다. 이를 위해 @Mock 애너테이션을 사용하여 MailSendClient와 MailSendHistoryRepository 클래스의 Mock 객체를 생성하고, @InjectMocks 애너테이션을 통해 이..
1. 사건 발달스프링 시큐리티 환경에서 MVC를 테스트하기 위해서는 요청 헤더에 CSRF 토큰이 필요하다. 따라서 아래 코드와 같이 perform() 시에 요청 헤더에 스프링 시큐리티가 생성한 CSRF 토큰을 포함할 수 있다.근데 테스트 코드를 작성할 때마다 CSRF 토큰을 일일이 추가하는 것보단, 테스트 실행 전에 자동으로 추가할 수 있지 않을까? @WithMockUser@WebMvcTest(controllers = SectionController.class)class SectionControllerTest { @Test @DisplayName("신규 회고카드를 등록한다.") void createSection() throws Exception { //given ..
우리 프로젝트는 Spring Security를 사용하여 사용자의 인증 정보와 권한 정보를 관리하고 있다. 따라서 사용자의 인증과 권한 정보에 따라서 API 요청이 서버로 도달하게 할 것인지 결정한다. @WebMvcTest 애너테이션을 사용하여 Spring MVC의 Presentation Layer 테스트가 가능하다. 즉, 스프링에서는 Controller에 대한 테스트를 하게 된다. 1. 테스트 환경1-1. Controller@CurrentUser 애너테이션을 사용하여, 요청 헤더에 담긴 Bearer 토큰을 통해 인증된 사용자 정보를 가져온다.@ResponseStatus(HttpStatus.CREATED)를 통해 응답 상태 코드로 201을 갖는다.@RestController@RequestMapping("..