0

我想使用 Behat 来测试我的 angular.js 应用程序。但是我遇到的问题是,当您转到路线并想要单击链接时,Behat 不知道模板何时呈现,因此有时它会在内容不可用时单击。有使用 Behat 测试 angular.js 应用程序的经验的人吗?

或者有谁知道如果当前路线的模板已完成渲染,您如何检查 javascript?以及如何检查 angular.js 是否在页面加载时引导应用程序完成?

我知道 angular.js 有 ngScenario,但我想使用 Behat,因为:

  • 人类可读的 Gherkin 语言
  • 我们的后端是用 Symfony 编写的,所以我们可以使用相同的框架来测试两者

亲切的问候,

大安

4

1 回答 1

0

mink api 有一个方法wait允许您暂停 PHP 上下文的执行,直到您的 javascript 应用程序完成处理“某事”。文档中有一个简单的示例:http: //mink.behat.org/#basic-browser-interaction

$session->wait(5000,
    "$('.suggestions-results').children().length > 0"
);

在提供的示例中,PHP 上下文将暂停最多 5 秒,直到填充建议结果列表。您需要确定等效的 javascript 表达式,该表达式将确定您的路线何时完成渲染。

过去我们在使用 jQuery 表达式时遇到了一些麻烦,并且已经恢复到原生浏览器方法,例如getElementById.

您还需要使用能够执行 javascript 的 mink 驱动程序。我们使用ZombieDriver它在命令行上运行。有一些替代方案可能更适合您。

http://mink.behat.org/#different-browsers-drivers

于 2013-07-29T21:09:28.813 回答