1

我有一个popstate处理程序来处理页面转换而无需重新加载页面,并且我使用 Qunit 作为测试框架。问题是 popstate 事件是异步触发的,在我的测试中,我需要等待事件完成,然后再运行断言。目前,我正在使用setTimeout,等待一秒钟,然后运行断言。这是脆弱的,我想避免它。

这是我要测试的代码:

asyncTest("Transition1", function() {
    setUpPage(pageState1);
    assertPageState(pageState1);
    setUpPage(pageState2);
    assertPageState(pageState2);
    history.back();
    setTimeout(function() {
        assertPageState(pageState1);
    }, 1000);
});

我曾考虑为测试注册另一个 popstate 处理程序,但我不知道是否可以保证测试处理程序将始终在原始处理程序之后运行。另外,不确定如何注销处理程序(这只是因为我是 jquery 新手)。

4

0 回答 0