【发布时间】:2013-03-08 04:36:45
【问题描述】:
我有一个 Web 应用程序,它使用 Ajax 请求不断地从服务器轮询数据。我想使用zombie.js对其进行集成测试。
我要做的是等到 Ajax 轮询循环从服务器接收到数据。 20秒后应该会收到数据,所以我使用browser.wait(done, callback)检查数据是否存在,并将waitFor设置为最大超时一分钟。
但是,browser.wait() 总是几乎立即返回,即使我的 done 回调返回 false。
在zombie API documentation,我读到了以下关于browser.wait()的内容:
...它不能永远等待,尤其是对于可能重复触发的计时器(例如检查页面状态、长轮询)。
我想这就是我看到的行为的原因,但我真的不明白发生了什么。为什么我不能等待一分钟,直到我的轮询循环从服务器接收到数据?为什么browser.wait() 不能等待可能重复触发的计时器?我需要做什么来实施我的测试?
【问题讨论】:
-
你有什么新发现吗?
-
只是为了确保:
waitFor使用毫秒,对吗?我说的是经验;)另外,不要忘记maxWait。 -
“不断地从服务器轮询数据”——如果你对此有控制权,
socket.io将是一个很好的选择