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 -