我有一个popstate
处理程序来处理没有页面重新加载的页面转换,我使用Qunit作为测试框架。问题是popstate事件是异步触发的,在我的测试中我需要等待事件完成才能运行断言。目前,我正在使用setTimeout
,等待一秒钟,然后运行断言。这很脆弱,我想避免它。
这就像我试图测试的代码:
asyncTest("Transition1", function() {
setUpPage(pageState1);
assertPageState(pageState1);
setUpPage(pageState2);
assertPageState(pageState2);
history.back();
setTimeout(function() {
assertPageState(pageState1);
}, 1000);
});
我已经考虑过为测试注册另一个popstate处理程序,但我不知道是否可以保证测试处理程序将始终在原始处理程序之后运行。此外,不知道如何取消注册处理程序(这只是因为我是一个jquery新手)。