Yii - Prueba

Cuando escribimos una clase PHP, la depuramos paso a paso o usamos sentencias die o echo para verificar cómo funciona. Si desarrollamos una aplicación web, ingresamos datos de prueba en formularios para asegurarnos de que la página funcione como esperábamos. Este proceso de prueba se puede automatizar.

El enfoque de prueba automático tiene sentido para proyectos a largo plazo, que son:

  • Complejo y grande
  • Crece constantemente
  • Demasiado caro en términos de costo de la falla

Si su proyecto no se está volviendo complejo y es relativamente simple o es solo un proyecto de una sola vez, entonces las pruebas automatizadas pueden ser una exageración.

Preparación para las pruebas

Step 1- Instale el marco Codeception. Ejecute el siguiente código.

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

Step 2 - Ejecute lo siguiente.

composer global status

El resultado es "Se cambió el directorio actual a <directorio>". Debe agregar el '<directorio> / vendor / bin' a su variable PATH. En este caso, ejecute el siguiente código:

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

Step 3 - Crea una nueva base de datos llamada 'yii2_basic_tests'.

Step 4 - Ejecutar dentro del directorio de pruebas.

codeception/bin/yii migrate

La configuración de la base de datos se puede encontrar en tests/codeception/config/config.php.

Step 5 - Construya las suites de prueba a través de.

codecept build

Accesorios

El propósito principal de los accesorios es configurar el entorno en un estado desconocido para que sus pruebas se ejecuten de la manera esperada. Yii proporciona un marco de fijación cercano. Un concepto clave del marco de accesorios de Yii es el objeto de accesorio. Representa un aspecto particular de un entorno de prueba. El objeto fixture es una instancia delyii\test\Fixture class.

Para definir un dispositivo, debe crear una nueva clase y extenderla desde yii \ test \ Fixture o yii \ test \ ActiveFixture. El primero es mejor para dispositivos de propósito general, mientras que el segundo está diseñado específicamente para trabajar con bases de datos y ActiveRecord.

Pruebas unitarias

Las pruebas unitarias le ayudan a probar funciones individuales. Por ejemplo, funciones de modelo o una clase de componente.

Step 1 - Crea un nuevo aparato en el archivo llamado ExampleFixture.php bajo la tests/codeception/fixtures directorio.

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

Step 2 - Luego, cree un nuevo archivo de prueba llamado ExampleTest.php en la carpeta 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);
      }
   }
?>

En el código anterior, definimos tres pruebas:

  • testCreateMyUser,
  • testUpdateMyUser y
  • testDeleteMyUser.

Acabamos de crear un nuevo usuario, actualizar su nombre e intentar eliminarlo. Gestionamos elMyUser modelo en términos de la base de datos yii2_basic_tests, que es una copia completa de nuestra base de datos real.

Step 3 - Para iniciar el tests, vaya a la carpeta de pruebas y ejecútelo.

codecept run unit models/ExampleTest

Debería pasar todas las pruebas. Verá lo siguiente:

Pruebas funcionales

Las pruebas funcionales lo ayudan a:

  • probar la aplicación usando el emulador del navegador
  • verificar que la función funcione correctamente
  • interactuar con la base de datos
  • enviar datos a scripts del lado del servidor

Dentro de la carpeta de pruebas, ejecute -

generate:cept functional AboutPageCept

El comando anterior crea el AboutPageCept.phparchivo en la carpeta tests / codeception / funcional. En esta prueba funcional, vamos a comprobar si nuestroabout la página existe.

Step 1 - Modificar el AboutPageCept.php archivo.

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

En el código anterior, verificamos si estamos en la página Acerca de. Obviamente, deberíamos ver la palabra "acerca de" y no "manzana" en la página.

Step 2 - Ejecute la prueba a través de.

run functional AboutPageCept

Verá la siguiente salida: