我正在使用 Java 库 HtmlUnit 为 Web 应用程序创建回归测试套件。

我有一个“onload”处理程序卡在应用程序的页面正文中,以在 session 过期后重定向到超时页面。处理程序是以下形式的一些 JavaScript:
window.setTimeout( function() { window.location = 'timout.html'; }, 3600000);
我想测试重定向最终会在时间到达时被触发,但我能找到的最接近的事情是实际等待整个持续时间(在上面的示例中说一个小时),如 Java 示例所建议的以下:
WebClient webClient = new WebClient();...webClient.waitForBackgroundJavaScript( 3600000);
我想知道是否有可能诱使脚本执行引擎表现得好像已经过去了很长时间,而实际上不必等待几分钟或几小时 "real time" 才能运行测试套件。

理想情况下,可以告诉引擎/客户端/解释器 X 毫秒已经过去(以模拟等待),或者可能设置某种“时间膨胀”因子并轮询页面以查看它是如何更新的。

最佳答案

我不认为你可以轻易做到这一点。我认为可能的唯一方法是模拟在您的测试中处理 settimeout 的 Rhino 方法......
也许使用像 Mockito 这样的框架......但这不是你想要的,好像你想测试页面重定向的有效性,你测试重定向所需的时间

干杯

格罗克

关于javascript - 如何让 HtmlUnit 的 WebClient 加速由 window.setTimeout 触发的 javascript 的执行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5958201/

10-13 07:17