Wiremock - "URL не совпадает", даже если он такой же - PullRequest
4 голосов
/ 06 февраля 2020

Я столкнулся с проблемой, что Wiremock говорит, что мои URL не совпадают, даже если они совпадают. Очевидно, я что-то упустил. Что я делаю не так?

WireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo("/test/url?bookingCode=XYZ123&lastName=TEST"))
    .willReturn(WireMock.aResponse()
    .withStatus(200))
)

Ниже приведен журнал консоли.

-----------------------------------------------------------------------------------------------------------------------
| Closest stub                                             | Request                                                  |
-----------------------------------------------------------------------------------------------------------------------
                                                           |
GET                                                        | GET
/test/url?bookingCode=XYZ123&lastName=TEST                 | /test/url?bookingCode=XYZ123&lastName=TEST            <<<<< URL does not match
                                                           |
                                                           |
-----------------------------------------------------------------------------------------------------------------------

Это потому, что я не включаю заголовки в средства сопоставления?

Если да Как я могу избежать сопоставления заголовков? Я хотел бы получить ответ независимо от того, какой заголовок я отправляю.

Ответы [ 2 ]

5 голосов
/ 07 февраля 2020

Обнаружена причина .. WireMock.urlPathEqualTo("/test/url?bookingCode=XYZ123&lastName=TEST") не должно иметь параметров запроса.

Изменение на WireMock.urlPathEqualTo("/test/url") решило проблему.

Документация говорит, что это разрешается. Кроме того, журнал URL does not match вызывал путаницу. Учитывая, что проверка на совпадение выполняется отдельно, в Wiremock мог быть добавлен отдельный журнал для параметра запроса.

Создан выпуск: https://github.com/tomakehurst/wiremock/issues/1262

0 голосов
/ 25 февраля 2020

Вы можете go с помощью метода withQueryParam для параметров, сохраняя метод urlPathEqualTo, выделенный для пути URL.

WireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo("/test/url"))
         .withQueryParam("bookingCode", WireMock.equalTo("XYZ123"))
         .withQueryParam("lastName", WireMock.equalTo("TEST"))
         .willReturn(WireMock.aResponse()
         .withStatus(200))

Для получения дополнительной информации см. http://wiremock.org/docs/request-matching/

...