fab*_*tab 15 node.js zombie.js
我有一个Web应用程序,它使用Ajax请求不断轮询来自服务器的数据.我想使用zombie.js为它实现集成测试.
我要做的是等到Ajax轮询循环从服务器接收数据.数据应在20秒后收到,因此我browser.wait(done, callback)
用来检查数据是否存在,并设置waitFor
为最大超时一分钟.
但是,browser.wait()
即使我的done
回调返回false ,它也会立即返回.
在zombie API文档中,我阅读了以下内容browser.wait()
:
...它不能永远等待,特别是对于可能反复触发的定时器(例如检查页面状态,长轮询).
我想这就是我看到的行为的原因,但我真的不明白发生了什么.为什么我不能等待一分钟,直到我的轮询循环从服务器接收数据?为什么不能browser.wait()
等待可能反复发射的计时器?我需要做些什么来实施我的测试?
小智 3
如果 Zombie.js 正在等待文档准备就绪,则默认情况下,Zombie.js 将等待页面上的所有脚本加载并执行。
如果我理解正确的话,您的脚本只有在文档准备好 20 秒后才会执行。在这种情况下,Zombie 有一个函数可以让您在浏览器上下文中评估 javascript,因此如果它在计时器上,您可以更快地启动您的 ajax 代码,并且您不想等待它。
另一种选择是简单地使用正常的 JavaScript 超时来等待 20 秒,然后查看 DOM 中是否有您期望的更改。
setTimeout(function(){
browser.document.query("#interestingElement")
}, 20*1000);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7841 次 |
最近记录: |