WebTestClient
es un cliente HTTP diseñado para probar aplicaciones de servidor. Envuelve el WebClient de Spring y lo utiliza
para realizar solicitudes, pero expone una fachada de prueba para probar las respuestas. WebTestClient
se puede utilizar para realizar pruebas HTTP de un extremo a otro. También se puede utilizar para probar
aplicaciones Spring MVC y Spring WebFlux sin un servidor en ejecución simulando objetos de solicitud y objetos de
respuesta del servidor.
Configuración
Para configurar WebTestClient
, debe seleccionar una configuración de servidor para el enlace. Esta puede
ser una de varias configuraciones para el servidor simulado o una conexión a un servidor real.
Enlace de controlador
Esta configuración le permite probar controladores específicos utilizando objetos de solicitud y respuesta simulados sin un servidor en ejecución.
Para aplicaciones WebFlux, utilice la siguiente configuración, que carga la infraestructura equivalente a Configuraciones Java de WebFlux, registra los controladores dados y crea una cadena WebHandler para procesar solicitudes:
Cliente WebTestClient =
WebTestClient.bindToController(new TestController()).build();
val cliente = WebTestClient.bindToController(TestController()).build()
Para Spring MVC, use la siguiente configuración que delega StandaloneMockMvcBuilder autoridad para cargar infraestructura equivalente a Java - Configuración de WebMvc, registra los controladores dados y crea una instancia de MockMvc para manejar solicitudes:
Cliente WebTestClient =
MockMvcWebTestClient.bindToController(new TestController()).build();
val client = MockMvcWebTestClient.bindToController(TestController()).build()
Enlace a ApplicationContext
Esta configuración le permite cargar una configuración de Spring con infraestructura de Spring MVC o Spring WebFlux y declaraciones de controlador, y usarla para procesar solicitudes utilizando objetos simulados de solicitud y respuesta sin un servidor en ejecución.
Para WebFlux, use la siguiente configuración, donde se pasa ApplicationContext
de Spring WebHttpHandlerBuilder para crear Cadena
WebHandler para procesar solicitudes:
@SpringJUnitConfig(WebConfig.class)
clase MisPruebas {
Cliente WebTestClient;
@Antes deCada
configuración vacía (contexto de ApplicationContext) {
cliente = WebTestClient.bindToApplicationContext(contexto).build();
}
}
- Especifique la configuración a cargar
- Implementar la configuración
- Crear un
WebTestClient
@SpringJUnitConfig(WebConfig::class)
clase MisPruebas {
cliente lateinit var: WebTestClient
@Antes deCada
configuración divertida (contexto: ApplicationContext) {
cliente = WebTestClient.bindToApplicationContext(context).build()
}
}
- Especifique la configuración a cargar
- Implementar la configuración
- Crear un
WebTestClient
Para Spring MVC, use la siguiente configuración, donde el ApplicationContext
de Spring se pasa a MockMvcBuilders.webAppContextSetup para crear una instancia MockMvc para procesar solicitudes:
@ExtendWith(SpringExtension.class)
@WebAppConfiguration("classpath:META-INF/web-resources")
@ContextHierarchy({
@ContextConfiguration(clases = RootConfig.class),
@ContextConfiguration(clases = WebConfig.clase)
})
clase MisPruebas {
@autocableado
WebApplicationContext wac;
Cliente WebTestClient;
@Antes deCada
configuración vacía() {
cliente = MockMvcWebTestClient.bindToApplicationContext(this.wac).build();
}
}
- Especifique la configuración a cargar
- Implementar la configuración
- Crear un
WebTestClient
@ExtendWith(SpringExtension.class)
@WebAppConfiguration("classpath:META-INF/web-resources")
@ContextHierarchy({
@ContextConfiguration(clases = RootConfig.class),
@ContextConfiguration(clases = WebConfig.clase)
})
clase MisPruebas {
@autocableado
lateinit var wac: WebApplicationContext;
cliente lateinit var: WebTestClient
@Antes deCada
configuración divertida() {
cliente = MockMvcWebTestClient.bindToApplicationContext(wac).build()
}
}
- Especifique la configuración a cargar
- Implementar la configuración
- Crear un
WebTestClient
Enlazar a una función de enrutador
Esta configuración le permite probar puntos finales funcionales utilizando objetos de solicitud y respuesta simulados sin ejecutar el servidor.
Para WebFlux, utilice la siguiente configuración, que delega a RouterFunctions.toWebHandler
la autoridad
para crear una configuración de servidor para manejar solicitudes:
RouterFunction<?> ruta=...
cliente = WebTestClient.bindToRouterFunction(ruta).build();
val ruta: RouterFunction<*> =...
cliente val = WebTestClient.bindToRouterFunction(ruta).build()
Actualmente no hay opciones de prueba para los puntos finales funcionales de WebMvc para Spring MVC.
Vincular al servidor
Esta configuración se conecta a un servidor en ejecución para realizar pruebas HTTP completas de un extremo a otro:
client = WebTestClient.bindToServer().baseUrl("http://localhost:8080").build();
cliente = WebTestClient.bindToServer().baseUrl("http://localhost:8080").build()
Configuración del cliente
Además de la configuración del servidor descrita anteriormente, también puede configurar la configuración del
cliente, incluida la URL base, encabezados predeterminados, filtros de cliente y más. Se puede acceder fácilmente a
estas opciones después de ejecutar bindToServer()
. Para todas las demás opciones de configuración, debe
utilizar configureClient()
para pasar de la configuración del servidor a la configuración del cliente,
como se muestra a continuación:
cliente = WebTestClient.bindToController(new TestController())
.configureClient()
.baseUrl("/prueba")
.build();
cliente = WebTestClient.bindToController(TestController())
.configureClient()
.baseUrl("/prueba")
.build()