Wiremock - "URL does not match" 即使它是相同的
Wiremock - "URL does not match" even though it is same
我遇到了 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
|
|
-----------------------------------------------------------------------------------------------------------------------
是不是因为我没有将 Headers 包含在匹配器中?
如果是,我怎样才能避免匹配header?无论我发送什么 header,我都希望得到回复。
找到原因..WireMock.urlPathEqualTo("/test/url?bookingCode=XYZ123&lastName=TEST")
不应该有查询参数。
将其更改为 WireMock.urlPathEqualTo("/test/url")
解决了问题。
Documentation 表示允许。此外,日志 URL does not match
引起了混乱。考虑到匹配检查是分开的,wiremock 可以为查询参数添加一个单独的日志。
您可以使用 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))
我遇到了 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
|
|
-----------------------------------------------------------------------------------------------------------------------
是不是因为我没有将 Headers 包含在匹配器中?
如果是,我怎样才能避免匹配header?无论我发送什么 header,我都希望得到回复。
找到原因..WireMock.urlPathEqualTo("/test/url?bookingCode=XYZ123&lastName=TEST")
不应该有查询参数。
将其更改为 WireMock.urlPathEqualTo("/test/url")
解决了问题。
Documentation 表示允许。此外,日志 URL does not match
引起了混乱。考虑到匹配检查是分开的,wiremock 可以为查询参数添加一个单独的日志。
您可以使用 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))