WARNING:
You are browsing the documentation for Symfony 2.5
which is not maintained anymore.
Consider upgrading your projects to Symfony 5.2.
How to Test Doctrine Repositories
How to Test Doctrine Repositories¶
Unit testing Doctrine repositories in a Symfony project is not recommended. When you’re dealing with a repository, you’re really dealing with something that’s meant to be tested against a real database connection.
Fortunately, you can easily test your queries against a real database, as described below.
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 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\KernelTestCase;
class ProductRepositoryFunctionalTest extends KernelTestCase
{
/**
* @var \Doctrine\ORM\EntityManager
*/
private $em;
/**
* {@inheritDoc}
*/
public function setUp()
{
self::bootKernel();
$this->em = static::$kernel->getContainer()
->get('doctrine')
->getManager()
;
}
public function testSearchByCategoryName()
{
$products = $this->em
->getRepository('AcmeStoreBundle:Product')
->searchByCategoryName('foo')
;
$this->assertCount(1, $products);
}
/**
* {@inheritDoc}
*/
protected function tearDown()
{
parent::tearDown();
$this->em->close();
}
}
This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.