When we write a PHP class, we debug it step by step or use die or
echo statements to verify how it works. If we develop a web application,
we are entering test data in forms to ensure the page works as we
expected. This test process can be automated.
Automatic test approach makes sense for long term projects, which are −
Step 4 − Inside the tests directory run.
Step 5 − Build the test suites via.
To define a fixture, you should create a new class and extend it from yii\test\Fixture or yii\test\ActiveFixture. The former is better for general purpose fixtures while the latter is specifically designed to work with database and ActiveRecord.
Step 1 − Create a new fixture in the file called ExampleFixture.php under the tests/codeception/fixtures directory.
Step 3 − To start the tests, move to the tests folder and run.
Step 1 − Modify the AboutPageCept.php file.
Step 2 − Run the test via.
Automatic test approach makes sense for long term projects, which are −
- Complex and large
- Grows constantly
- Too expensive in terms of cost of the failure
Preparing for the Tests
Step 1 − Install the Codeception framework. Run the following code.composer global require "codeception/codeception = 2.0.*" composer global require "codeception/specify = *" composer global require "codeception/verify = *"Step 2 − Run the following.
composer global statusThe output is “Changed current directory to <directory>”. You should add the '<directory>/vendor/bin' to your PATH variable. In this case, run the following code −
export PATH = $PATH:~/.composer/vendor/binStep 3 − Create a new database called 'yii2_basic_tests'.
Step 4 − Inside the tests directory run.
codeception/bin/yii migrateThe database configuration can be found at tests/codeception/config/config.php.
Step 5 − Build the test suites via.
codecept build
Fixtures
The main purpose of fixtures is to set up the environment in an unknown state so that your tests run in an expected way. Yii provides a near fixture framework. A key concept of the Yii fixture framework is the fixture object. It represents a particular aspect of a test environment. The fixture object is an instance of the yii\test\Fixture class.To define a fixture, you should create a new class and extend it from yii\test\Fixture or yii\test\ActiveFixture. The former is better for general purpose fixtures while the latter is specifically designed to work with database and ActiveRecord.
Unit Tests
Unit tests help you testing individual functions. For example, model functions or a component class.Step 1 − Create a new fixture in the file called ExampleFixture.php under the tests/codeception/fixtures directory.
<?php namespace app\tests\codeception\fixtures; use yii\test\ActiveFixture; class ExampleFixture extends ActiveFixture { public $modelClass = ‘app⊨’MyUser'; } ?>Step 2 − Then, create a new test file called ExampleTest.php in the tests/codeception/unit/models folder.
<?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 = "myser@email.com"; $this->assertTrue($m->save()); } public function testUpdateMyUser() { $m = new MyUser(); $m->name = "myuser2"; $m->email = "myser2@email.com"; $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); } } ?>In the above code, we define three tests −
- testCreateMyUser,
- testUpdateMyUser, and
- testDeleteMyUser.
Step 3 − To start the tests, move to the tests folder and run.
codecept run unit models/ExampleTestIt should pass all the tests. You will see the following −
Functional Tests
Functional tests help you in −- testing the application using browser emulator
- verify that the function works properly
- interact with the database
- submit data to server-side scripts
generate:cept functional AboutPageCeptThe above command creates the AboutPageCept.php file under the tests/codeception/functional folder. In this functional test, we are going to check whether our about page exists.
Step 1 − Modify the AboutPageCept.php file.
<?php $I = new FunctionalTester($scenario); $I->wantTo('perform actions and see result'); $I->amOnPage('site/about'); $I->see('about'); $I->dontSee('apple'); ?>In the above given code, we checked whether we are on the about page. Obviously, we should see the word 'about' and no 'apple' on the page.
Step 2 − Run the test via.
run functional AboutPageCeptYou will see the following output −
No comments:
Post a Comment