如何让WebTestClient注销所有请求

时间:2018-03-15 15:24:55

标签: java spring spring-mvc spring-test spring-webflux

我有这样的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。我可以创建一些应用程序配置或配置类来执行此操作,但遗憾的是我还没有找到方法。

1 个答案:

答案 0 :(得分:0)

使用ExchangeFilterFunction。请参阅此帖how to log webclient call

使用已注册的过滤器创建您自己的客户端,它应该可以工作。