Yii - Teste

Quando escrevemos uma classe PHP, nós a depuramos passo a passo ou usamos instruções die ou echo para verificar como ela funciona. Se desenvolvermos um aplicativo da web, estamos inserindo dados de teste em formulários para garantir que a página funcione conforme o esperado. Este processo de teste pode ser automatizado.

A abordagem de teste automático faz sentido para projetos de longo prazo, que são -

  • Complexo e grande
  • Cresce constantemente
  • Muito caro em termos de custo da falha

Se o seu projeto não está ficando complexo e é relativamente simples ou é apenas um projeto único, o teste automatizado pode ser um exagero.

Preparando-se para os testes

Step 1- Instale a estrutura Codeception. Execute o seguinte código.

composer global require "codeception/codeception = 2.0.*"
composer global require "codeception/specify = *"
composer global require "codeception/verify = *"

Step 2 - Execute o seguinte.

composer global status

A saída é “Diretório atual alterado para <diretório>”. Você deve adicionar o '<diretório> / vendor / bin' à sua variável PATH. Nesse caso, execute o seguinte código -

export PATH = $PATH:~/.composer/vendor/bin

Step 3 - Crie um novo banco de dados chamado 'yii2_basic_tests'.

Step 4 - Executar dentro do diretório de testes.

codeception/bin/yii migrate

A configuração do banco de dados pode ser encontrada em tests/codeception/config/config.php.

Step 5 - Construa as suítes de teste via.

codecept build

Luminárias

O objetivo principal dos acessórios é configurar o ambiente em um estado desconhecido para que seus testes sejam executados da maneira esperada. O Yii fornece uma estrutura de instalação próxima. Um conceito chave da estrutura de fixação Yii é o objeto de fixação. Ele representa um aspecto específico de um ambiente de teste. O objeto de fixação é uma instância doyii\test\Fixture class.

Para definir um fixture, você deve criar uma nova classe e estendê-la de yii \ test \ Fixture ou yii \ test \ ActiveFixture. O primeiro é melhor para aparelhos de uso geral, enquanto o último é projetado especificamente para trabalhar com banco de dados e ActiveRecord.

Testes Unitários

Os testes de unidade ajudam a testar funções individuais. Por exemplo, funções de modelo ou uma classe de componente.

Step 1 - Crie um novo acessório no arquivo chamado ExampleFixture.php debaixo de tests/codeception/fixtures diretório.

<?php
   namespace app\tests\codeception\fixtures;
   use yii\test\ActiveFixture;
   class ExampleFixture extends ActiveFixture {
      public $modelClass = ‘app⊨’MyUser';
   }
?>

Step 2 - Em seguida, crie um novo arquivo de teste chamado ExampleTest.php na pasta tests / codeception / unit / models.

<?php
   namespace tests\codeception\unit\models;
   use app\models\MyUser;
   use yii\codeception\TestCase;
   class ExampleTest extends TestCase {
      public function testCreateMyUser() {
         $m = new MyUser(); $m->name = "myuser";
         $m->email = "[email protected]"; $this->assertTrue($m->save()); } public function testUpdateMyUser() { $m = new MyUser();
         $m->name = "myuser2"; $m->email = "[email protected]";
         $this->assertTrue($m->save());
         $this->assertEquals("myuser2", $m->name);
      }
      public function testDeleteMyUser() {
         $m = MyUser::findOne(['name' => 'myuser2']); $this->assertNotNull($m); MyUser::deleteAll(['name' => $m->name]);
         $m = MyUser::findOne(['name' => 'myuser2']); $this->assertNull($m);
      }
   }
?>

No código acima, definimos três testes -

  • testCreateMyUser,
  • testUpdateMyUser e
  • testDeleteMyUser.

Acabamos de criar um novo usuário, atualizamos seu nome e tentamos excluí-lo. Nós gerenciamos oMyUser modelo em termos do banco de dados yii2_basic_tests, que é uma cópia completa de nosso banco de dados real.

Step 3 - Para iniciar o tests, vá para a pasta de testes e execute.

codecept run unit models/ExampleTest

Deve passar em todos os testes. Você verá o seguinte -

Testes Funcionais

Os testes funcionais ajudam você em -

  • testando o aplicativo usando o emulador de navegador
  • verifique se a função funciona corretamente
  • interagir com o banco de dados
  • enviar dados para scripts do lado do servidor

Dentro da pasta de testes, execute -

generate:cept functional AboutPageCept

O comando acima cria o AboutPageCept.phparquivo na pasta tests / codeception / function. Neste teste funcional, vamos verificar se nossoabout página existe.

Step 1 - Modifique o AboutPageCept.php Arquivo.

<?php
   $I = new FunctionalTester($scenario); $I->wantTo('perform actions and see result');
   $I->amOnPage('site/about'); $I->see('about');
   $I->dontSee('apple');
?>

No código fornecido acima, verificamos se estamos na página sobre. Obviamente, devemos ver a palavra 'sobre' e nenhuma 'maçã' na página.

Step 2 - Execute o teste via.

run functional AboutPageCept

Você verá a seguinte saída -