我在Yii2应用程序中使用Codeception进行单元测试。 Yii2模块具有记录的seeRecord()方法。还有类似canSeeRecord()
没有任何在线文档,但在PHPDoc中有其他信息:
条件断言:测试不会在失败时停止
但它究竟意味着什么?在测试失败时,PhpStorm仅显示第一个错误,因此我没有看到任何差异。这两个电话之间是否存在实际差异:
$this->tester->seeRecord(MyModel::class, ['name' => 'rob006']);
$this->tester->canSeeRecord(MyModel::class, ['name' => 'rob006']);
答案 0 :(得分:2)
记录在https://codeception.com/docs/03-AcceptanceTests#Conditional-Assertions
通常,只要任何断言失败,就会进一步断言 测试将被跳过。有时你不想要这个 - 也许你有一个 长时间运行的测试,你希望它运行到最后。在这种情况下,你 可以使用条件断言。每个
see
方法都有一个对应的canSee
方法,dontSee
有cantSee
方法:$I->canSeeInCurrentUrl('/user/miles'); $I->canSeeCheckboxIsChecked('#agree'); $I->cantSeeInField('user[name]', 'Miles');
每个失败的断言都会显示在测试结果中,但不会停止测试。
答案 1 :(得分:0)
事实证明PHPDoc是正确的 - 在断言失败后测试将继续。但在我的情况下,我对PhpStorm集成感到困惑,它只报告了第一个错误。
我创建了简单的测试:
public function testTest() {
// products table is empty - these tests always fail
$this->tester->canSeeRecord(Product::class, ['id' => 1]);
$this->tester->canSeeRecord(Product::class, ['id' => 2]);
$this->tester->canSeeRecord(Product::class, ['id' => 3]);
}
PhpStorm仅显示此测试中的第一个错误:
但是当您从控制台运行此测试时,会报告所有三个错误: