Testare i repository Doctrine

I test unitari dei repository Doctrine in un progetto Symfony non sono raccomandati. Quando si ha a che fare con un repository, si sta trattando qualcosa che ha effettivamente bisogno di essere testata con una vera connessione alla base dati.

Per fortuna, si possono facilmente testare le query su una base dati reale, come descritto qui sotto.

Test funzionali

Se occorre eseguire effettivamente una query, occorrerà far partire il kernel, per ottenere una connessione valida. In questo caso, si estenderà KernelTestCase, che rende tutto alquanto facile:

// 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();
    }
}

Tabella dei contenuti

Argomento precedente

Testare codice che interagisce con la base dati

Argomento successivo

Personalizzare il processo di bootstrap prima dei test

Questa pagina