用于测试Yii应用程序以及如何解决phpBrowser限制所需的代码的Yii桥是

时间:2015-08-04 07:15:56

标签: yii functional-testing codeception acceptance-testing

我正在设置代码来测试我的Yii应用程序。 我遇到了'YiiBridge'并且我无法理解为什么这是必需的,因为我创建了一个简单的验收测试用例并且它工作正常。 我的测试用例是:

<?php
    $I = new AcceptanceTester($scenario);
    $I->wantTo('ensure that the frontpage works');
    $I->amOnPage('/');
    $I->see('LOGIN');
    ?>

更复杂的测试用例是否需要YiiBridge?

另外我注意到接受和功能测试用例完全相同,在functional.suite.yml文件中缺少phpBrowser,它存在于acceptance.suite.yml文件中,并且在代码网站上说phpBrowser有以下缺点:

  • 您只能点击包含有效网址或表单提交按钮的链接
  • 您无法填写不在表单内的字段
  • 您无法使用JavaScript互动:模态窗口,日期选择器等。

通过这种方式,我将无法测试我的AngularJs功能。有没有办法解决这些限制?

提前致谢!

1 个答案:

答案 0 :(得分:1)

  

更复杂的测试用例是否需要YiiBridge?

不,他们不会。

我们也使用Yii并使用WebDriver编写验收测试。它与phpBrowser类似,你不需要Yii Bridge,因为WebDriver / phpBrowser将“模拟”一个真正的浏览器。功能测试需要Yii Bridge。是的,你是对的:

  

功能测试几乎相同,只有一个主要区别:功能测试不需要Web服务器来运行测试。

More about functional tests.

对于AngularJS和其他javascript测试,您必须编写一些自定义函数,如下所示:

public function openDevice() {
    $I = $this;
    $script = 'return document.getElementById("createDevice").children[0].click()';
    $I->executeJS($script);
}

测试JS总是有点烦人,但这是可能的。