Closed ruchirsachdeva closed 2 years ago
When I reverse the order of setting expectations, it works! :what: i.e
WORKS! and http://mock-server-1080/api/path?cursor=abc returns "{}"
MockServer will just perform the action of the first matching expectation as described here: https://mock-server.com/mock_server/creating_expectations.html#matching_order
If you want the first expectation to only be matched when the query parameter is not present you need to use a not matcher for the query parameter to express that is should not be present. For more details of not matchers see here: https://mock-server.com/mock_server/creating_expectations.html#button_match_request_by_not_matching_headers this example shows how to use a not matcher for a header but the same approach can be used for query parameters.
Describe the issue If an expectation (E1) is set for a Request (R1) with a path (P1) and another expectation (E2) is set for another Request (R2) same path(P1) and with a query parameter (QP1), then for an incoming request(R2) for the path (P1) with query parameter (QP1), the MockServerClient does not respect/match the expectation (E2) set for Request (R2) with path (P1) with query parameter (QP1), instead it matches the expectation (E1) set for the Request (R1) with path (P1) without query parameter.
What you are trying to do I am trying to use MockServerClient to set two expectations
/api/path
to return response ="{\n \"cursor\": \"abc\"}"
/api/path
with query param =?cursor=abc
to return empty response "{}"Issue is that
http://mock-server-1080/api/path?cursor=abc
returns"{\n \"cursor\": \"abc\"}"
MockServer version 5.11.2
To Reproduce Steps to reproduce the issue:
1. How you are running MockServer (i.e maven plugin, docker, etc)
2. Code you used to create expectations
mockServerClient .when(new HttpRequest().withPath("/path")) .respond(new HttpResponse().withStatusCode(200).withBody("{\"cursor\":\"abc\"}"));
3. What error you saw
matches wrong expectation
Expected behaviour
should match expectation
MockServer Log