I am facing an issue that Wiremock says my URLs don't match even though they are the same. Obviously I am missing something. What am I doing wrong?
WireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo("/test/url?bookingCode=XYZ123&lastName=TEST"))
.willReturn(WireMock.aResponse()
.withStatus(200))
)
Below is the console log.
-----------------------------------------------------------------------------------------------------------------------
| Closest stub | Request |
-----------------------------------------------------------------------------------------------------------------------
|
GET | GET
/test/url?bookingCode=XYZ123&lastName=TEST | /test/url?bookingCode=XYZ123&lastName=TEST <<<<< URL does not match
|
|
-----------------------------------------------------------------------------------------------------------------------
Is it because I am not including Headers in the matchers?
If yes, how can I avoid matching the headers? I would like to get a response irrespective of what header I am sending.
Found the reason.. WireMock.urlPathEqualTo("/test/url?bookingCode=XYZ123&lastName=TEST")
should not have query params.
Changing it to WireMock.urlPathEqualTo("/test/url")
resolved the issue.
Documentation says it is allowed. Also, the log URL does not match
was causing the confusion. Considering the match check is separate, wiremock could have added a separate log for query param.
Created issue : https://github.com/tomakehurst/wiremock/issues/1262
You can go with withQueryParam
method for the parameters while keeping urlPathEqualTo
method dedicated to URL path.
WireMock.stubFor(WireMock.get(WireMock.urlPathEqualTo("/test/url"))
.withQueryParam("bookingCode", WireMock.equalTo("XYZ123"))
.withQueryParam("lastName", WireMock.equalTo("TEST"))
.willReturn(WireMock.aResponse()
.withStatus(200))
For more information, please refer http://wiremock.org/docs/request-matching/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With