popstate
ページのリロードなしでページ遷移を処理するハンドラーがあり、Qunit をテスト フレームワークとして使用しています。問題は、popstate イベントが非同期に発生することです。私のテストでは、アサーションを実行する前にイベントが完了するまで待つ必要があります。現在、私は を使用してsetTimeout
おり、1 秒待ってからアサーションを実行しています。これはもろいので避けたいです。
ここに私がテストしようとしているコードのようなものがあります:
asyncTest("Transition1", function() {
setUpPage(pageState1);
assertPageState(pageState1);
setUpPage(pageState2);
assertPageState(pageState2);
history.back();
setTimeout(function() {
assertPageState(pageState1);
}, 1000);
});
テスト用に別の popstate ハンドラーを登録することを考えましたが、テスト ハンドラーが常に元のハンドラーの後に実行されることが保証されているかどうかはわかりません。また、ハンドラーの登録を解除する方法がわかりません (これは、私が jquery の初心者だからです)。