首页 > 解决方案 > WebTest Cient 的 exchange() 编码 url 导致“预期状态:<200> 但原为:<404>”。有什么办法可以阻止它对我的 URL 进行编码

问题描述

我正在使用 WebTestClient 在春季编写消费者合同,当我点击包含上下文参数的 URL 时,我的测试失败说预期 200 但响应它 404。在我看来,当调用 exchange() 时,它正在编码导致失败的 URL。我点击的网址是:-

/v2/resolvedPoliciesOutcome?assetClass=ABC-ABC-ABC&contextParams=(courseId=1bf854,courseBssVer=1,ignoreOverrides=true)

 FluxExchangeResult<String> result = webTestClient.get().uri((uriBuilder -> 
                      uriBuilder.path(GET_COURSE_SETTING_SUCCESS_URL)
              .queryParam("assetClass","ABC-ABC-ABC")
                      .queryParam("contextParams"," 
                      (courseId=1bf854,courseBssVer=1,ignoreOverrides=true)")
                      .build()))
              .exchange()
                      .expectStatus().isOk().expectHeader()
                      .contentType(contentType).returnResult(String.class);

输出:-

java.lang.AssertionError: Status expected:<200> but was:<404>

> GET http://localhost:12830/lee/v2/resolvedPoliciesOutcome?assetClass=ABC-ABC-ABC&contextParams=(courseId%3D1bf854,courseBssVer%3D1,ignoreOverrides%3Dtrue)
> WebTestClient-Request-Id: [1]

No content

< 404 Not Found
< Content-Type: [text/plain]
< Transfer-Encoding: [chunked]
< Server: [Jetty(9.2.z-SNAPSHOT)]

标签: javaspringurlspring-webflux

解决方案


推荐阅读