Кодирующий URL-адрес WebTest Cient’s exchange (), приводящий к «Ожидаемому статусу:, но было:». Есть ли какой-либо способ, которым я могу запретить ему кодировать мой URL

#java #spring #url #spring-webflux

#java #spring #url #spring-webflux

Вопрос:

Я пишу потребительский контракт весной, используя WebTestClient, когда я нажимаю на URL, который содержит параметры контекста, мой тест завершается неудачей, указывая ожидаемый 200, но в ответе это 404. Мне кажется, что когда вызывается exchange (), он кодирует URL-адрес, что приводит к сбою. URL, на который я нажимаю, является:-

/v2/resolvedPoliciesOutcome?assetClass=ABC-ABC-ABCamp;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-ABCamp;contextParams=(courseId=1bf854,courseBssVer=1,ignoreOverrides=true)
> WebTestClient-Request-Id: [1]

No content

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

Комментарии:

1. итак: вы пробовали запускать URL-адрес в своем браузере? возможно, вам нужно было иметь «/» перед GET_COURSE_SETTING_SUCCESS_URL в вашем вызове path (..)

2. да, я сделал… Я получаю ответ, когда я нажимаю на этот URL в postman

3. Также пробовал добавлять и удалять «/». Не сработало

4. и нет никакой разницы между URL-адресом, который вы нажали в postman, и тем, который вы нажали через свой код? ошибка 404 указывает на обратное.

5. Нет, разницы нет. Единственное отличие, которое я могу заметить, заключается в том, что URL, который он генерирует в консоли, закодирован. Итак, я предполагаю, что URL-адрес, по которому он попадает, таков: /v2/resolvedPoliciesOutcome?assetClass=ABC-ABC-ABCamp;contextParams=(courseId=1bf854,courseBssVer=1,ignoreOverrides=true) вместо : /v2/resolvedPoliciesOutcome?assetClass=ABC-ABC-ABCamp;contextParams=(courseId=1bf854,courseBssVer=1,ignoreOverrides=true)