#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)