Last updated
Last updated
컨트롤러가 예상대로 작동하는 지 테스트하려면 @WebFluxTest 어노테이션을 사용할 수 있습니다. @WebFluxTest
는 Spring WebFlux 인프라를 자동으로 구성하고 스캔 빈을 @Controller
, @ControllerAdvice
, @JsonComponent
, Converter
, GenericConverter
, 및WebFluxConfigurer
로 제한합니다. @WebFluxTest
어노테이션을 사용하면 일반 @Component
빈은 검색되지 않습니다.
스프링 웹플럭스
스프링5에서 새로 등장한, 웹 어플래케이션에서 리액티브 프로그래밍을 제공하는 프레임워크
종종 @WebFluxTest
는 단일 컨트롤러로 제한되며 @MockBean
어노테이션과 함께 사용하여 필요한 공동 작업자에게 모의 구현을 제공합니다.
@MockBean :
spring-boot-test 패키지에서 제공 1.4~ 가짜 객체를 만들어서 테스트할 수 있게 해준다. (@Autowired와 비슷하게 사용되고, 실제 객체가 아닌 가짜 객체가 주입된다)
기존에 사용되는 빈의 껍데기만 가져오고 내부의 구현 부분은 모두 사용자에게 위임한 형태
[참고사이트]
@WebFluxTest
는 또한 전체 HTTP 서버를 시작하지 않고도 WebFlux 컨트롤러를 신속하게 테스트 할 수 있는 강력한 방법을 제공하는 를 자동 구성합니다.
WebClient
스프링 5에 새롭게 추가된 기능으로, API에 대한 요청과 응답을 Non-blocking 방식으로 처리할 수 있다 (기존의 RestTemplate를 대체)
RestTemplate의 경우 테스트를 위해 TestRestTemplate가 존재했음. 이와 같이 WebClient에도 테스트를 위한 WebTestClient를 제공한다.
given
해당 Mock Bean이 어떤 행동을 취하면 어떤 결과를 반환한다를 선언하는 부분입니다.
이 설정은 모의 웹 응용 프로그램에서 WebTestClient
를 사용하는 순간 WebFlux에서만 작동하므로 WebFlux 응용 프로그램에서만 지원됩니다.
@WebFluxTest
가 사용할 수 있는 자동 구성 목록은 found in the appendix에서 찾을 수 있습니다.
Jackson Module
과 같은 추가 구성 요소를 등록해야하는 경우 테스트에서 @Import
를 사용하여 추가 구성 클래스를 가져올 수 있습니다.
@AutoConfigureWebTestClient
로 어노테이션을 달아 non-@WebFluxTest
(예 : @SpringBootTest
)에서 WebTestClient
를 자동 구성 할 수도 있습니다. 다음 예제에서는 @WebFluxTest
와 WebTestClient
를 모두 사용하는 클래스를 보여줍니다.
@WebFluxTest
는 기능 웹 프레임 워크를 통해 등록된 경로를 감지 할 수 없습니다. 컨텍스트에서 RouterFunction
Bean을 테스트하려면 @Import
를 통해 자신의 RouterFunction
을 가져 오거나 @SpringBootTest
를 사용하여 가져 오는 것이 좋습니다.
@WebFluxTest
는 SecurityWebFilterChain
유형의 @Bean을 통해 등록 된 사용자 지정 보안 구성을 검색 할 수 없습니다. 이를 테스트에 포함 시키려면 @Import
를 통해 Bean을 등록하는 구성을 가져 오거나 @SpringBootTest
를 사용해야합니다.
때떄로 Spring WebFlux 테스트를 작성하는 것만으로는 충분하지 않습니다. Spring Boot는 full end-to-end tests with an actual server를 수행하는 데 도움을줍니다.