Yii - Testowanie
Kiedy piszemy klasę PHP, debugujemy ją krok po kroku lub używamy instrukcji die lub echo, aby sprawdzić, jak to działa. Jeśli tworzymy aplikację internetową, wprowadzamy dane testowe w formularzach, aby upewnić się, że strona działa zgodnie z naszymi oczekiwaniami. Ten proces testowy można zautomatyzować.
Automatyczne podejście do testów ma sens w przypadku projektów długoterminowych, które są -
- Złożone i duże
- Rośnie stale
- Zbyt drogie pod względem kosztów awarii
Jeśli Twój projekt nie staje się skomplikowany i jest stosunkowo prosty lub jest to tylko projekt jednorazowy, automatyczne testowanie może być przesadą.
Przygotowanie do testów
Step 1- Zainstaluj framework Codeception. Uruchom następujący kod.
composer global require "codeception/codeception = 2.0.*"
composer global require "codeception/specify = *"
composer global require "codeception/verify = *"Step 2 - Uruchom następujące.
composer global statusWynik to „Zmieniono katalog bieżący na <katalog>”. Należy dodać „<directory> / vendor / bin” do zmiennej PATH. W takim przypadku uruchom następujący kod -
export PATH = $PATH:~/.composer/vendor/binStep 3 - Utwórz nową bazę danych o nazwie 'yii2_basic_tests'.
Step 4 - Wewnątrz katalogu testów uruchom.
codeception/bin/yii migrateKonfigurację bazy danych można znaleźć pod adresem tests/codeception/config/config.php.
Step 5 - Zbuduj pakiety testowe za pośrednictwem.
codecept buildOprawy
Głównym celem fixturów jest ustawienie środowiska w nieznanym stanie, tak aby testy działały w oczekiwany sposób. Yii dostarcza ramy blisko urządzeń. Kluczową koncepcją frameworka urządzeń Yii jest obiekt fixture. Reprezentuje określony aspekt środowiska testowego. Obiekt fixture jest instancją klasyyii\test\Fixture class.
Aby zdefiniować urządzenie, powinieneś utworzyć nową klasę i rozszerzyć ją z yii \ test \ Fixture lub yii \ test \ ActiveFixture. Pierwsza jest lepsza dla urządzeń ogólnego przeznaczenia, podczas gdy druga jest specjalnie zaprojektowana do pracy z bazą danych i ActiveRecord.
Testy jednostkowe
Testy jednostkowe pomagają w testowaniu poszczególnych funkcji. Na przykład funkcje modelu lub klasa komponentów.
Step 1 - Utwórz nowe urządzenie w pliku o nazwie ExampleFixture.php pod tests/codeception/fixtures informator.
<?php
   namespace app\tests\codeception\fixtures;
   use yii\test\ActiveFixture;
   class ExampleFixture extends ActiveFixture {
      public $modelClass = ‘app⊨’MyUser';
   }
?>Step 2 - Następnie utwórz nowy plik testowy o nazwie ExampleTest.php w folderze testy / 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);
      }
   }
?>W powyższym kodzie definiujemy trzy testy -
- testCreateMyUser,
- testUpdateMyUser i
- testDeleteMyUser.
Właśnie utworzyliśmy nowego użytkownika, zaktualizowaliśmy jego nazwę i próbowaliśmy go usunąć. ZarządzamyMyUser model pod względem bazy danych yii2_basic_tests, która jest kompletną kopią naszej prawdziwej bazy danych.
Step 3 - Aby rozpocząć tests, przejdź do folderu testów i uruchom.
codecept run unit models/ExampleTestPowinien przejść wszystkie testy. Zobaczysz następujące -
 
                Testy funkcjonalne
Testy funkcjonalne pomagają w -
- testowanie aplikacji za pomocą emulatora przeglądarki
- sprawdź, czy funkcja działa poprawnie
- interakcji z bazą danych
- przesyłać dane do skryptów po stronie serwera
Wewnątrz folderu testów uruchom -
generate:cept functional AboutPageCeptPowyższe polecenie tworzy plik AboutPageCept.phpplik w folderze testy / codeception / funkcjonalny. W tym teście funkcjonalnym sprawdzimy, czy naszabout strona istnieje.
Step 1 - Zmodyfikuj plik AboutPageCept.php plik.
<?php
   $I = new FunctionalTester($scenario); $I->wantTo('perform actions and see result');
   $I->amOnPage('site/about'); $I->see('about');
   $I->dontSee('apple');
?>W powyższym kodzie sprawdziliśmy czy jesteśmy na stronie about. Oczywiście na stronie powinno znaleźć się słowo „o”, a nie „jabłko”.
Step 2 - Uruchom test przez.
run functional AboutPageCeptZobaczysz następujący wynik -
