PHP Swagger has the class MockRequester
with exact the same functionalities of ApiRequester
class. The only
difference is the MockRequester
don't need to request to a real endpoint.
This is used to validate request and response against your OpenAPI spec without running any server code.
<?php
class MyTest extends ApiTestCase
{
public function testExpectOK()
{
$expectedResponse = \ByJG\WebRequest\Psr7\Response::getInstance(200)
->withBody(new \ByJG\WebRequest\Psr7\MemoryStream(json_encode([
"id" => 1,
"name" => "Spike",
"photoUrls" => []
])));
// The MockRequester does not send the request to a real endpoint
// Just returning the expected Response object sent in the constructor
$request = new \ByJG\ApiTools\MockRequester($expectedResponse);
$request
->withMethod('GET')
->withPath("/pet/1");
$this->assertRequest($request); // That should be "True" based on the specification
}
}
You can populate the ApiRequester
/MockRequester
with the information provided by the RequestInterface
PSR7 interface.
e.g.
<?php
$psr7Request = \ByJG\WebRequest\Psr7\Request::getInstance(new Uri("/method_to_be_tested?param1=value1"))
->withMethod("GET")
->withBody('{"foo":"bar"}');
$request = new \ByJG\ApiTools\ApiRequester();
$request->withPsr7Request($psr7Request);
// Return a ResponseInterface PSR7 component
$response = $request->send();