Testes
O template de aplicação Yii inclui uma configuração de testes pronta. Ele usa o Codeception com asserções do PHPUnit e tem quatro suítes:
Unitpara classes PHP isoladas.Functionalpara código da aplicação chamado no mesmo processo PHP.Webpara requisições enviadas por um servidor HTTP.Consolepara comandos de console.
Os arquivos principais são:
codeception.yml.tests/bootstrap.php.tests/Unit.suite.yml.tests/Functional.suite.yml.tests/Web.suite.yml.tests/Console.suite.yml.tests/Support/*Tester.php.
Executar testes localmente
Gere as classes de actor depois de instalar as dependências ou alterar uma suíte:
vendor/bin/codecept buildExecute todos os testes:
APP_ENV=test vendor/bin/codecept runO template também define um script do Composer:
APP_ENV=test composer testExecute uma suíte:
APP_ENV=test vendor/bin/codecept run Unit
APP_ENV=test vendor/bin/codecept run Functional
APP_ENV=test vendor/bin/codecept run Web
APP_ENV=test vendor/bin/codecept run ConsoleExecute uma classe ou um método de teste:
APP_ENV=test vendor/bin/codecept run Functional HomePageCest
APP_ENV=test vendor/bin/codecept run Functional HomePageCest:baseAPP_ENV=test é obrigatório nos comandos locais porque tests/bootstrap.php prepara o ambiente da aplicação antes da execução dos testes.
Executar testes no Docker
Gere as classes de actor:
make codecept buildExecute todos os testes:
make testExecute uma suíte:
make test Unit
make test Functional
make test Web
make test ConsoleO ambiente de testes do Docker lê docker/test/.env, onde APP_ENV=test já está definido.
Escolher uma suíte
Comece com testes unitários para código que não tem fronteira com o framework: value objects, validadores, serviços de domínio e transformadores.
Use testes funcionais quando o código precisa da configuração do Yii, injeção de dependência, roteamento, middlewares, tratamento de requisições ou renderização de templates.
Use testes web para comportamentos que precisam passar por um servidor HTTP: códigos de status, links, redirecionamentos, cookies e páginas renderizadas como o cliente as vê.
Use testes de console para os comandos em src/Console.
Execute a análise estática no CI e antes de alterar contratos compartilhados.