This minimalistic library is intended to enable donatj/mock-webserver
to handle more complex request definitions,
by adapting the interfaces of InterNations/http-mock
into it.
Most of the code appears to be a partial rewriting of the Matcher
and Expectation
implementation in InterNations/http-mock
.
Therefore, credits of the code should go to InterNations/http-mock
.
We could have chosen not to use donatj/mock-webserver
and instead to use InterNations/http-mock
.
We did not choose this path because InterNations/http-mock
is somewhat archived, while donatj/mock-webserver
is
actively being maintained.
Another reason why we prefer donatj/mock-webserver
is the simpler dependency, as InterNations/http-mock
appears to use the Symfony framework, which could be a heavy machinery.
The test script provides a self-explanatory example.
<?php
$complex_response = new ComplexResponse();
$complex_response
->when_path_is('/api/users')
->when_method_is('POST')
->when_header_is('x-api-key', new RegexMatcher('/^mock/'))
->when_header_exists('x-api-version')
->when_header_not_exists('x-api-version-old')
->when_query_param_is('GET', 'session_uid', new RegexMatcher('/^s/'))
->when_query_param_exists('POST', 'image')
->when_query_param_not_exists('POST', 'debug')
->then(new Response('{"id": 1, "name": "John Doe"}', [], 200));
?>
Since ComplexResponse
implements ResponseInterface
, it can be a drop-in replacement.
This package is under the MIT license. For more detail, see LICENSE.