带有查询参数的Spring Webflux WebTestClient

时间:2019-10-16 09:10:46

标签: testing spring-webflux

在我的webflux应用程序中,我有这个GET端点

v3/callback?state=cGF5bWVudGlkPTRiMmZlMG

我正在尝试使用WebTestClient

编写集成测试
@Test
public void happyScenario() {
    webTestClient.get().uri("/v3/callback?state=cGF5bWVudGlkPTRiMmZlMG")
            .exchange()
            .expectStatus()
            .isOk();
}

此测试用例返回404 notFound,如果我删除了查询参数,它将被调用,但是缺少state参数

我尝试使用attribute

  webTestClient.get().uri("/v3/callback")
            .attribute("state","cGF5bWVudGlkPTRiMmZlMG")
            .exchange()
            .expectStatus()
            .isOk();

但仍然缺少state参数,使用webTestClient时如何在请求中包含查询参数?

1 个答案:

答案 0 :(得分:1)

您可以使用UriBuilder

webTestClient.get()
            .uri(uriBuilder ->
                    uriBuilder
                            .path("/v3/callback")
                            .queryParam("state", "cGF5bWVudGlkPTRiMmZlMG")
                            .build())
            .exchange()
            .expectStatus()
            .isOk();

这应该有效。