Yii测试 Yii字段 Yii缓存 当我们编写一个PHP类时,我们会逐步调试它,或者使用die或echo语句来验证它是如何工作的。如果我们开发一个Web应用程序,我们会在窗体中输入测试数据以确保页面按我们的预期工作。这个测试过程可以自动化。 自动测试方法对于长期项目是有意义的, 复杂而庞大 不断增长 在失败成本方面太昂贵 如果你的项目没有变得复杂并且相对简单,或者它只是一次性项目,那么自动化测试可能是一种矫枉过正。 准备测试 第1步 - 安装Codeception框架。 运行以下代码。 composer global require "codeception/codeception = 2.0.*" composer global require "codeception/specify = *" composer global require "codeception/verify = *" 第2步 - 运行以下。 composer global status 输出为“将当前目录更改为<目录>”。您应该将' / vendor / bin'添加到PATH变量中。在这种情况下,运行以下代码 - export PATH = $PATH:~/.composer/vendor/bin 第3步 - 创建一个名为 'yii2_basic_tests' 的新数据库。 第4步 - 在tests目录下运行。 codeception/bin/yii migrate 数据库配置可以在 tests / codeception / config / config.php中找到 。 第5步 - 通过构建测试套件。 codecept build 赛程 Fixtures的主要目的是将环境设置为未知状态,以便您的测试以预期的方式运行。Yii提供了一个近乎固定的框架。Yii夹具框架的一个关键概念是夹具对象。它代表了测试环境的特定方面。夹具对象是 yii \ test \ Fixture类的 一个实例。 要定义一个灯具,您应该创建一个新类并从yii \ test \ Fixture或yii \ test \ ActiveFixture扩展它。前者更适合通用夹具,而后者则专门设计用于数据库和ActiveRecord。 单元测试 单元测试可以帮助您测试各个功能。例如,模型函数或组件类。 第1步 - 在 tests / codeception / fixtures 目录下的 ExampleFixture.php 文件中创建一个新的夹具。 ** <? php namespace app\tests\codeception\fixtures; use yii\test\ActiveFixture; class ExampleFixture extends ActiveFixture { public $modelClass = ‘app⊨’MyUser'; } ?> 第2步 - 然后,在tests / codeception / unit / models文件夹中创建一个名为ExampleTest.php的新测试文件。 <?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); } } ?> 在上面的代码中,我们定义了三个测试 - testCreateMyUser, testUpdateMyUser和 testDeleteMyUser。 我们刚刚创建了一个新用户,更新了他的名字,并试图删除他。我们根据yii2_basic_tests数据库来管理 MyUser 模型,该数据库是我们真实数据库的完整副本。 第3步 - 要开始 测试 ,请移至测试文件夹并运行。 codecept run unit models/ExampleTest 它应该通过所有的测试。你会看到以下 - 功能测试 功能测试可以帮助你 - 使用浏览器模拟器测试应用程序 验证该功能是否正常工作 与数据库交互 将数据提交给服务器端脚本 在测试文件夹内运行 - generate:cept functional AboutPageCept 上述命令将在tests / codeception / functional文件夹下创建 AboutPageCept.php 文件。在这个功能测试中,我们将检查我们的 关于 页面是否存在。 第1步 - 修改 AboutPageCept.php 文件。 <?php $I = new FunctionalTester($scenario); $I->wantTo('perform actions and see result'); $I->amOnPage('site/about'); $I->see('about'); $I->dontSee('apple'); ?> 在上面给出的代码中,我们检查了我们是否在关于页面。显然,我们应该在页面上看到“约”字和“苹果”字样。 第2步 - 通过运行测试。 run functional AboutPageCept 您将看到以下输出 - Yii字段 Yii缓存