如何在Codeception yii 2中获取页面源

时间:2019-02-08 11:16:54

标签: unit-testing yii2 yii2-advanced-app functional-testing codeception

我需要保存失败的测试的源代码来修复它。在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();
}

1 个答案:

答案 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
}