Skip to content

Commit

Permalink
[#3311] Use KernelTestCase instead of WebTestCase for tests needing o…
Browse files Browse the repository at this point in the history
…nly a Container
  • Loading branch information
johnkary committed Mar 5, 2014
1 parent 8903e23 commit 6c52b92
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
15 changes: 12 additions & 3 deletions cookbook/console/console_command.rst
Expand Up @@ -183,14 +183,14 @@ instead of

To be able to use the fully set up service container for your console tests
you can extend your test from
:class:`Symfony\\Bundle\\FrameworkBundle\\Test\\WebTestCase`::
:class:`Symfony\\Bundle\\FrameworkBundle\\Test\\KernelTestCase`::

use Symfony\Component\Console\Tester\CommandTester;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Acme\DemoBundle\Command\GreetCommand;

class ListCommandTest extends WebTestCase
class ListCommandTest extends KernelTestCase
{
public function testExecute()
{
Expand All @@ -214,3 +214,12 @@ you can extend your test from
// ...
}
}

.. versionadded:: 2.5
:class:`Symfony\\Bundle\\FrameworkBundle\\Test\\KernelTestCase` was
extracted from :class:`Symfony\\Bundle\\FrameworkBundle\\Test\\WebTestCase`
in Symfony 2.5, where WebTestCase was made to inherit from KernelTestCase.
The difference being that WebTestCase makes available an instance of
:class:`Symfony\\Bundle\\FrameworkBundle\\Client` via `createClient()`,
while KernelTestCase makes available an instance of
:class:`Symfony\\Component\\HttpKernel\\KernelInterface` via `createKernel()`.
9 changes: 4 additions & 5 deletions cookbook/testing/doctrine.rst
Expand Up @@ -17,15 +17,15 @@ Functional Testing
------------------

If you need to actually execute a query, you will need to boot the kernel
to get a valid connection. In this case, you'll extend the ``WebTestCase``,
to get a valid connection. In this case, you'll extend the ``KernelTestCase``,
which makes all of this quite easy::

// src/Acme/StoreBundle/Tests/Entity/ProductRepositoryFunctionalTest.php
namespace Acme\StoreBundle\Tests\Entity;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;

class ProductRepositoryFunctionalTest extends WebTestCase
class ProductRepositoryFunctionalTest extends KernelTestCase
{
/**
* @var \Doctrine\ORM\EntityManager
Expand All @@ -37,8 +37,7 @@ which makes all of this quite easy::
*/
public function setUp()
{
static::$kernel = static::createKernel();
static::$kernel->boot();
self::bootKernel();
$this->em = static::$kernel->getContainer()
->get('doctrine')
->getManager()
Expand Down

0 comments on commit 6c52b92

Please sign in to comment.