Integrando o PHPUnit e o PHPSpec ao CodeIgniter e ao Lumine Framework
Meu grande amigo português Ricardo Mestre me fez a seguinte pergunta esses dias:
Como faço para usar o PHPUnit no CodeIgniter?
O que vou mostrar aqui serve para esses dois frameworks (PHPUnit e PHPSpec) ou para qualquer um outro framework que necessite.
Seguinte, o CodeIgniter possui sua configuração de acesso no index.php, só que na penúltima linha, ele faz chamada ao arquivo BASEPATH.’codeigniter/CodeIgniter.php’;. Quando é requisitado, ele faz a requisição aos arquivos de inicialização e executa o método index da classe default dentro do arquivo system/application/config/routes.php. (UPDATE: o arquivo que define do controlador default a ser chamado assim que a aplicação funcina é em routes.php)
Aí, para usarmos os controladores do CI é necessário utilizar esse arquivo de configuração por conta das contantes que o CI utiliza. Para evitar de quando executarmos nossas classes de testes, elas não venham a executar por conta da saída do CI.
Então, é necessário fazer um arquivo com o mesmo contéudo do index.php, exceto da linha BASEPATH.’codeigniter/CodeIgniter.php’;. Ao fazermos isso é necessário chamar as bibliotecas básicas do CodeIgniter manualmente que estão dentro da pasta /system/codeigniter/. As bibliotecas são BaseN.php (4 para o PHP 4 e 5 para o PHP 5). Common.php e como vamos fazer teste dos controladores, é necessário importar a classe Controlller.php que está dentro da pasta /system/libraries/.
Após isso é só incluir esse arquivo criado dentro das classes de testes.
Resumindo:
- Criar arquivo com contéudo do index.php excluindo a penúltima linha que faz chamada ao BASEPATH.’codeigniter/CodeIgniter.php’;
- Incluir dentro desse arquivo chamada para /system/codeigniter/BaseN.php (N = 4 ou N = 5);
- Incluir dentro desse arquivo chamada para /system/codeigniter/Common.php;
- Incluir dentro desse arquivo chamada para /system/libraries/Controller.php;
Bom, agora para utilizar os Models do Lumine, é apenas necessário fazer chamada ao arquivo com as configurações de acesso do Lumine. A critério de convenção, podemos criar um novo arquivo de configuração apenas alterando o nome do banco de dados, assim não prejudicando seu banco de dados.
Depois disso tudo podemos testar nossos controladores e os modelos do Lumine com o PHPUnit, PHPSpec ou qualquer outro framework de testes.
Até a próxima!



agosto 16th, 2008 at 7:44
precisa disso tudo?, em momento algum vi falando de integração dos frameworks.
por que reescrever o arquivo, não ficou nada claro. vc quer evitar ficando chamar a library ?, no config.php vc pode colocar para carregar automaticamente.
com o FPDF eu simplesmente mudei o nome da classe para CI_FPDF e o construtor … analisei rapidamente o code e mudei o diretorio da pasta de fontes.
daí foi só jogar na library/ o fpdf e a pasta de fontes e tudo funcionou normalmente.
ainda não testei com o phpUnit, farei nos proximos dias .. vo gravar se site nos favoritos para lhe dar um retorno, e quem sabe fazer um post sobre isso.. hehehe.. então, até breve!
agosto 16th, 2008 at 12:55
Na realidade sim, precisa disso tudo. Não tem como tu apenas importar o index.php padrão, por que ele carrega o controlador padrão que tu definiu nas rotas e faz chamada ao método index.
Se tu apenas importar o controlador diretamente para fazer testes, terá que ter todos as classes e funções de que o controlador precisa pra funcionar corretamente carregados.
Diferentemente do FPDF que é apenas uma biblioteca, PHPUnit e PHPSpec são frameworks, e como tal eles tem seus próprios padrões. Nesse tutorial eu explico como eu tive que fazer para criar testes de meus controladores e modelos usando esses frameworks.
Eu também escrevi um novo artigo sobre como eu cheguei a esse ponto http://www.caironoleto.com/2008/08/12/criando-testes-com-phpunit/
:D