Zend Framework 2 Tips: Usando Doctrine em testes unitários

Posted on março 14, 2013. Filed under: PHP, Tips, Zend Framework | Tags:, , , |

Introdução

Neste artigo vamos aprender como instanciar o Entity Manager do Doctrine nas classes de teste unitário no Zend Framework 2. Se você usa Doctrine no seu projeto, é bem provável que algumas classes que precisará testar possuem a dependência do Entity Manager. É sobre isso que trata esse artigo.

Caso necessário, em artigo anterior, já vimos como instalar os módulos Doctrine, ZFTool e Firephp no Zend Framework 2.

Registrando os módulos do Doctrine no Config de testes

Se você criou seu módulo do Zend Framework através do ZFTool provavelmente foi criado uma pasta chamada test/ dentro do diretório pai do seu módulo. No caso de exemplo do módulo Application, que já vem instalado no esqueleto inicial do projeto, o caminho ficaria: module/Application/test/.

O primeiro passo é registrar os módulos do Doctrine dentro do arquivo TestConfig.php.dist que esta dentro do diretório test/ do seu módulo:

<?php
// module/Application/test/TestConfig.php.dist
return array(
    'modules' => array(
        'Application',
        'DoctrineModule',
        'DoctrineORMModule'
    ),
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            '../../../config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' => array(
            'module',
            'vendor',
        ),
    ),
);

Bootstrap

Existe um arquivo chamado Bootstrap.php dentro do diretório test/ do seu módulo. Esse arquivo é responsável por inicializar todos os parâmetros necessários para que você possa trabalhar com testes unitários no Zend Framework.

Vamos criar dentro do arquivo Bootstrap.php um método estático que será responsável por retornar o Entity Manager do Doctrine. É através deste método que vamos acessar o Entity Manager em nossos testes:

<?php
// module/Application/test/Bootstrap.php
..
    public static function getEntityManager()
    {
    	$sm = static::getServiceManager();
    	return $sm->get('doctrine.entitymanager.orm_default');
    }
    
}

Bootstrap::init();

Acessando o Entity Manager

Por final, vamos acessar o Entity Manager dentro de nossas classes de teste. Podemos estar testando um Controller, um Model ou qualquer outro componente. Basta chamarmos o método estático Bootstrap::getEntityManager();.

Não se esqueça de usar o namespace do Bootstrap no início do seu script:

<?php
// module/Application/test/ApplicationTest/Model/AlbumTest.php
namespace ApplicationTest\Model;
use ApplicationTest\Bootstrap;
//.... setUp, etc.

public function testAlbum()
{
	$em = Bootstrap::getEntityManager();
	$album = new Album($em);
}

Make a Comment

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: