如何知道angular.js是否完成呈现当前路线的模板

时间:2013-07-26 08:31:46

标签: angularjs behat

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

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

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

  • 人类可读的小黄瓜语言
  • 我们的后端是用Symfony编写的,所以我们可以使用相同的框架来测试这两个
亲切的问候,

大安

1 个答案:

答案 0 :(得分: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