codeception的Yii桥是否是测试Yii应用程序以及如何绕过phpBrowser限制所必需的

codeception的Yii桥是否是测试Yii应用程序以及如何绕过phpBrowser限制所必需的,yii,functional-testing,codeception,acceptance-testing,Yii,Functional Testing,Codeception,Acceptance Testing,我正在设置codeception以测试我的Yii应用程序。 我遇到了“YiiBridge”,我真的不明白为什么需要它,因为我创建了一个简单的验收测试用例,它工作得很好。 我的测试用例是: <?php $I = new AcceptanceTester($scenario); $I->wantTo('ensure that the frontpage works'); $I->amOnPage('/'); $I->see('LOGIN');

我正在设置codeception以测试我的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,在codeception网站上,他们说phpBrowser有以下缺点:

  • 您只能单击具有有效URL的链接或表单提交按钮
  • 不能填写表单之外的字段
  • 不能使用JavaScript交互:模式窗口、日期选择器等
这样我就无法测试AngularJs的功能了。有没有办法绕过这些限制

提前谢谢

更复杂的测试用例需要YiiBridge吗

不,他们不会

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

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

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

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

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

谢谢,这很有帮助。如果你不介意的话,最好的感谢就是接受并投票决定答案:)