我需要保存失败的测试的源代码来修复它。在yii 2中使用代码接受测试时如何获取源html?
尽管有这些确切的功能,但我无法让$I->grabPageSource()
和$I->_getResponseContent()
正常工作。
public function checkCall(FunctionalTester $I)
{
$I->amOnRoute('mx/ed',['model' => 'State']);
$I->seeResponseCodeIs(200);
$I->seeResponseCodeIsSuccessful();
$html = $I->grabPageSource();
}
答案 0 :(得分:1)
Codeception本身将所有失败测试的最后请求的页面源保存在tests/_output
目录中,您无需执行任何操作。
断言失败会引发异常,因此不会执行$I->seeResponseCodeIsSuccessful
之后的代码。
如果要在特定测试中实现一些自定义错误处理,则可以将断言包装在try-catch块中,并将catchPageSource包裹在catch中。
public function checkCall(FunctionalTester $I)
{
$I->amOnRoute('mx/ed',['model' => 'State']);
try{
$I->seeResponseCodeIs(200);
$I->seeResponseCodeIsSuccessful();
} catch (Exception $e) {
$html = $I->grabPageSource();
//do your error handling here
throw $e; //rethrow exception to make test fail
}
}
如果要对所有测试实施自定义错误处理,请将_failed method添加到Helper\Functional
目录中的tests/_support/Helper
类中。
public function _failed(\Codeception\TestInterface $test, $fail)
{
$testName = $test->getMetadata()->getName();
$pageSource = $this->getModule('Yii2')->getPageSource();
//do your error handling here
}