如何使HtmlUnit的WebClient加速执行由window.setTimeout触发的javascript?
作者:互联网
我正在使用Java库HtmlUnit为Web应用程序创建回归测试套件.
我有一个“onload”处理程序挂钩在应用程序页面的主体中,在会话过期后重定向到超时页面.处理程序是一些形式的JavaScript:
window.setTimeout(function(){window.location =’timout.html’;},3600000);
我想测试重定向最终会在时间到来时被触发,但我能找到的最接近的事情是实际等待整个持续时间(例如上面示例中的一小时),如Java示例所示下面:
WebClient webClient = new WebClient();
…
webClient.waitForBackgroundJavaScript(3600000);
我想知道是否有可能欺骗脚本执行引擎表现得好像已经过了很多时间,而实际上不必等待分钟或小时“real time”才能运行测试套件.
理想情况下,可以告诉引擎/客户端/解释器X毫秒已经过去(模拟等待),或者可能设置某种“时间膨胀”因素并轮询页面以查看它是如何更新的.
解决方法:
我认为你不能轻易做到这一点.我可以看到它的唯一方法是通过模拟处理测试中的settimeout的Rhino方法…
也许有像Mockito这样的框架……但是这不是你想要的,就像你想测试页面重定向的有效性一样,你测试重定向所需的时间
干杯
grooveek
标签:java,javascript,javascript-events,junit,htmlunit 来源: https://codeday.me/bug/20190710/1419763.html