我有这样的SpringBootTest设置
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ControllerTest {
@Autowired
private WebTestClient webTestClient;
@Test
public void postTest() {
// Setup data
Form form = new Form();
form.setName("Test1");
form.setDescription("Description1");
// Run method
webTestClient.post()
.uri("/api/v1/data")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.syncBody(form)
.exchange()
.expectStatus()
.isOk()
.expectBody()
.jsonPath("data.id").isNotEmpty()
.jsonPath("data.name").isEqualTo(form.getName())
.jsonPath("data.description").isEqualTo(form.getDescription())
.jsonPath("data.status").isEqualTo("A");
}
}
我无法找到使WebTestClient
注销所有HTTP请求和响应的方法。
我想将WebTestClient
保留为@Autowired
。我可以创建一些应用程序配置或配置类来执行此操作,但遗憾的是我还没有找到方法。
答案 0 :(得分:0)
使用ExchangeFilterFunction。请参阅此帖how to log webclient call。
使用已注册的过滤器创建您自己的客户端,它应该可以工作。