Comment on page

Testing API requests

When testing HTTP requests you need to create mock responses based on what would actually be returned from a real HTTP request. Symfony's HTTPClient has support for testing HTTP requests.
You can also use MockResponseFromFile to generate a mock response easily from a file.


Allows you to load a mock request from file.


  • $filename (string) File to load mock response from


Body file is loaded from {$filename}
The optional info file is loaded from {$filename}.info.php and must contain the $info variable (array). By default mock responses return a 200 status code which you can change by setting the $info array.


The following code loads ./responses/api-test.json and if it exists ./responses/ to create a mock response.
use Symfony\Component\HttpClient\MockHttpClient;
use Strata\Data\Api_DELETE\RestApi;
use Strata\Data\Response\MockResponseFromFile;
$responses = [
new MockResponseFromFile(__DIR__ . '/responses/api-test.json'),
$api = new RestApi('');
$api->setClient(new MockHttpClient($responses, ''));
$response = $api->get('test');
// Outputs:404
echo $response->getStatusCode();
// Outputs: JSON response content
echo $response->getContent();
// Outputs: 0
echo $api->getHeader($response, 'X-Total-Results');


"message": "PAGE NOT FOUND"


$info = [
'http_code' => 404,
'response_headers' => [
'X-Total-Results' => '0'
See ResponseInterface::getInfo() for possible info, the most common are:
  • http_code (int) - the last HTTP response code
  • response_headers (array) - an array of response headers
Last modified 9mo ago