Symfony 2 – Comment accéder à Doctrine depuis un test unitaire

Il est possible que durant votre développement avec le framework Symfony 2 (version BETA 5 à l’heure où j’écris) vous ayez besoin d’accéder à vos Entities depuis vos tests unitaires.

Il n’a pas été facile de trouver le moyen de communiquer avec Doctrine depuis ces foutus test unitaire ! C’est pour cela que je vous livre mon code, enfin celui d’un test unitaire.

Donc cette classe montre comment accéder a l’ORM de doctrine depuis une classe de test unitaire qui va donc, normalement, être exécuté avec PHPUnit !

namespace WaldoModelBundleTestsDataFixtures;

use SymfonyBundleFrameworkBundleTestWebTestCase; // Très important, c'est grâce à lui que l'on peut utiliser la méthode "$this->getKernelClass()"

class DataFixturesTest extends WebTestCase {

    public function __construct() {

        $kernelNameClass = $this->getKernelClass(); // Récupération du nom de la classe qui sert de kernel
        $kernel = new $kernelNameClass('test', true); // Instanciation de la classe et exécution du kernel dans un environnement de test avec débogage
        $kernel->boot(); // On boot le kernel (comme un pc ^^)
        $this->em = $kernel->getContainer()->get('doctrine.orm.entity_manager'); // On récupère entity manager
    }

    public function testPurgeData() {
       //...
       // On peut maintenant appeler les méthodes de l'ORM de Doctrine
       $query = $this->em->getConnection()->query('SELECT * FROM UNE_SUBLIME_TABLE');
       $this->assertEmpty($query->fetchAll());
    }

}
Tagués avec : ,
Publié dans Doctrine, PHP, Symfony2

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*