Testing

Application is a PSR-15 request handler. Tests can send a PSR-7 request directly to the application without starting RoadRunner or opening a port.

use Nyholm\Psr7\ServerRequest;

$app = new Application($configuration);
$response = $app->handle(new ServerRequest('GET', '/dogs'));

expect($response->getStatusCode())->toBe(200);
expect((string) $response->getBody())->toBe('{"dogs":[]}');

Set query, parsed-body, cookie, and request attributes with the regular PSR-7 methods before passing the request to handle():

$request = (new ServerRequest('POST', '/dogs'))
    ->withQueryParams(['notify' => 'true'])
    ->withParsedBody(['name' => 'Gustav'])
    ->withCookieParams(['session' => 'example']);

$response = $app->handle($request);

RoadRunner remains the production transport used by Application::start(); the request behavior is shared by both entry points.