intaro / symfony-testing-tools
Symfony testing tools
Installs: 10 016
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 2
Open Issues: 0
Requires
- php: >=5.4.4
- doctrine/data-fixtures: ~1.0
- phpunit/phpunit: ~4.2
- symfony/framework-bundle: ~2.1
This package is auto-updated.
Last update: 2024-12-15 00:30:05 UTC
README
The library contains improved classes of WebTestCase and Container for convenient testing.
Features
The Client local caching
Web Client is caching in WebTestCase. If you want to get a client you should use:
$client = static::getClient();
If you want to get a new client you should use:
$client = static::getClient(true);
Full example:
<?php namespace Foo\BarBundle\Tests\Controller; use Intaro\SymfonyTestingTools\WebTestCase; class SomeControllerTest extends WebTestCase { public function testIndex() { $client = static::getClient(true); //... } }
Shortcuts for EntityManager and Container
You can simply get EntityManager or Container in the current context:
<?php namespace Foo\BarBundle\Tests\Controller; use Intaro\SymfonyTestingTools\WebTestCase; class SomeControllerTest extends WebTestCase { public function testIndex() { $client = static::getClient(true); $em = static::getEntityManager(); $service = static::getContainer()->get('some_service'); //... } }
Checking a response HTTP code
You can check response result with the following methods:
<?php namespace Foo\BarBundle\Tests\Controller; use Intaro\SymfonyTestingTools\WebTestCase; class SomeControllerTest extends WebTestCase { public function testIndex() { $client = static::getClient(); $client->request('GET', '/foo/bar/index'); $this->assertResponseOk($client->getResponse(), 'Page opens'); $this->assertResponseRedirect($client->getResponse(), 'Page redirects to other page'); $this->assertResponseNotFound($client->getResponse(), 'Page not found'); $this->assertResponseForbidden($client->getResponse(), 'Page forbidden'); $this->assertResponseCode(201, $client->getResponse(), 'JSON returned', 'application/json'); } }
Fixtures appending
You can add fixtures before test running:
<?php namespace Foo\BarBundle\Tests\Controller; use Foo\BarBundle\DataFixtures\ORM\Test\ActionRecordData; use Intaro\SymfonyTestingTools\WebTestCase; class SomeControllerTest extends WebTestCase { public static function setUpBeforeClass() { static::appendFixture(new ActionRecordData, [ 'purge' => true, ]); } public function testIndex() { //... } }