See swagger-bundle-tools.
The easiest way to create functional tests for your API, is by using mixin ApiTestCase
. This will provide you with some convenience methods (get()
, post()
, put()
, etc) and
will validate responses using SwaggerAssertions to ensure the responses received are compliant with your Swagger spec. Example:
class PetStoreApiTest extends WebTestCase
{
use ApiTestCase;
/**
* Use config_basic.yml
*
* @var bool
*/
protected $env = 'basic';
/**
* @see https://github.com/kleijnweb/swagger-bundle/issues/16
*
* @var bool
*/
protected $validateErrorResponse = false;
/**
* Init response validation, point to your spec
*/
public static function setUpBeforeClass()
{
static::initSchemaManager(__DIR__ . '/path/to/a/spec.yml');
}
/**
* @test
*/
public function placingAnOrderWillReturnDataWithOrderIsPlaced()
{
$content = [
'petId' => 987654321,
'quantity' => 10,
];
$actual = $this->post('/v2/store/order', $content);
$this->assertSame('placed', $actual->status);
$this->assertSame($content['petId'], $actual->petId);
$this->assertSame($content['quantity'], $actual->quantity);
}
}
When using ApiTestCase, initSchemaManager() will also validate your Swagger spec against the official schema to ensure it is valid.