43 votes

Accéder au conteneur Symfony 2 via le test unitaire ?

Comment accéder au conteneur Symfony 2 dans un test unitaire ? Mes bibliothèques en ont besoin donc c'est essentiel.

Les classes de test s'étendent sur \PHPUnit_Framework_TestCase donc il n'y a pas de conteneur.

12voto

Babou34090 Points 371

Vous pouvez l'utiliser dans votre fonction de configuration

 protected $client;
protected $em;

/**
 * PHP UNIT SETUP FOR MEMORY USAGE
 * @SuppressWarnings(PHPMD.UnusedLocalVariable) crawler set instance for test.
 */
public function setUp()
{
    $this->client = static::createClient(array(
            'environment' => 'test',
    ),
        array(
            'HTTP_HOST' => 'host.tst',
            'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0',
    ));

    static::$kernel = static::createKernel();
    static::$kernel->boot();
    $this->em = static::$kernel->getContainer()
                               ->get('doctrine')
                               ->getManager();
    $crawler = $this->client->followRedirects();
}

N'oubliez pas de définir votre fonction de démontage

     protected function tearDown()
{
    $this->em->close();
    unset($this->client, $this->em,);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X