Yii - Thử nghiệm
Khi chúng tôi viết một lớp PHP, chúng tôi gỡ lỗi nó từng bước hoặc sử dụng các câu lệnh die hoặc echo để xác minh cách hoạt động của nó. Nếu chúng tôi phát triển một ứng dụng web, chúng tôi sẽ nhập dữ liệu thử nghiệm vào các biểu mẫu để đảm bảo trang hoạt động như chúng tôi mong đợi. Quá trình kiểm tra này có thể được tự động hóa.
Phương pháp kiểm tra tự động có ý nghĩa đối với các dự án dài hạn, đó là -
- Phức tạp và lớn
- Phát triển liên tục
- Quá đắt về chi phí của sự thất bại
Nếu dự án của bạn không phức tạp và tương đối đơn giản hoặc nó chỉ là dự án một lần, thì kiểm thử tự động có thể là một việc quá mức cần thiết.
Chuẩn bị cho các bài kiểm tra
Step 1- Cài đặt khuôn khổ Codeception. Chạy đoạn mã sau.
composer global require "codeception/codeception = 2.0.*"
composer global require "codeception/specify = *"
composer global require "codeception/verify = *"
Step 2 - Chạy phần sau.
composer global status
Đầu ra là “Đã thay đổi thư mục hiện tại thành <thư mục>”. Bạn nên thêm '<directory> / provider / bin' vào biến PATH của mình. Trong trường hợp này, hãy chạy đoạn mã sau:
export PATH = $PATH:~/.composer/vendor/bin
Step 3 - Tạo một cơ sở dữ liệu mới có tên 'yii2_basic_tests'.
Step 4 - Bên trong thư mục kiểm tra chạy.
codeception/bin/yii migrate
Cấu hình cơ sở dữ liệu có thể được tìm thấy tại tests/codeception/config/config.php.
Step 5 - Xây dựng các bộ thử nghiệm thông qua.
codecept build
Đồ đạc
Mục đích chính của đồ đạc là thiết lập môi trường ở trạng thái không xác định để các thử nghiệm của bạn chạy theo cách mong đợi. Yii cung cấp một khuôn khổ gần cố định. Một khái niệm chính của khung cố định Yii là đối tượng cố định. Nó thể hiện một khía cạnh cụ thể của môi trường thử nghiệm. Đối tượng fixture là một ví dụ củayii\test\Fixture class.
Để xác định một vật cố định, bạn nên tạo một lớp mới và mở rộng nó từ yii \ test \ Fixture hoặc yii \ test \ ActiveFixture. Cái trước tốt hơn cho các đồ đạc có mục đích chung trong khi cái sau được thiết kế đặc biệt để hoạt động với cơ sở dữ liệu và ActiveRecord.
Kiểm tra đơn vị
Kiểm thử đơn vị giúp bạn kiểm tra các chức năng riêng lẻ. Ví dụ, mô hình chức năng hoặc một lớp thành phần.
Step 1 - Tạo một vật cố định mới trong tệp có tên ExampleFixture.php phía dưới cái tests/codeception/fixtures danh mục.
<?php
namespace app\tests\codeception\fixtures;
use yii\test\ActiveFixture;
class ExampleFixture extends ActiveFixture {
public $modelClass = ‘app⊨’MyUser';
}
?>
Step 2 - Sau đó, tạo một tệp thử nghiệm mới có tên là ExampleTest.php trong thư mục 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);
}
}
?>
Trong đoạn mã trên, chúng tôi xác định ba kiểm tra -
- testCreateMyUser,
- testUpdateMyUser và
- testDeleteMyUser.
Chúng tôi vừa tạo một người dùng mới, cập nhật tên của anh ấy và cố gắng xóa anh ấy. Chúng tôi quản lýMyUser mô hình về cơ sở dữ liệu yii2_basic_tests, là bản sao hoàn chỉnh của DB thực của chúng tôi.
Step 3 - Để bắt đầu tests, di chuyển đến thư mục kiểm tra và chạy.
codecept run unit models/ExampleTest
Nó sẽ vượt qua tất cả các bài kiểm tra. Bạn sẽ thấy như sau:
Kiểm tra chức năng
Kiểm tra chức năng giúp bạn trong -
- thử nghiệm ứng dụng bằng trình giả lập trình duyệt
- xác minh rằng chức năng hoạt động bình thường
- tương tác với cơ sở dữ liệu
- gửi dữ liệu đến các tập lệnh phía máy chủ
Bên trong thư mục kiểm tra chạy -
generate:cept functional AboutPageCept
Lệnh trên tạo ra AboutPageCept.phptrong thư mục tests / codeception / function. Trong thử nghiệm chức năng này, chúng tôi sẽ kiểm tra xem liệuabout trang tồn tại.
Step 1 - Sửa đổi AboutPageCept.php tập tin.
<?php
$I = new FunctionalTester($scenario); $I->wantTo('perform actions and see result');
$I->amOnPage('site/about'); $I->see('about');
$I->dontSee('apple');
?>
Trong đoạn mã đã cho ở trên, chúng tôi đã kiểm tra xem chúng tôi có đang ở trên trang giới thiệu hay không. Rõ ràng, chúng ta sẽ thấy từ 'about' và không có 'apple' trên trang.
Step 2 - Chạy thử nghiệm qua.
run functional AboutPageCept
Bạn sẽ thấy kết quả sau: