QUnit に基づいて自動テスト フレームワークを作成していますが、時間がかかりすぎる場合 (タイムアウト) にテストを強制終了できるようにしたいと考えています。さて、私の現在の実装は非常に単純なものです。テストの開始時に、タイマーをセットアップして待機します。<iframe>
それまでにテストが終了していない場合は、失敗としてマークし、実行中のテストをリロードします。
これは、AJAX 呼び出しを待機している場合、または非同期テストが戻ってこない場合にうまく機能します。ただし、setTimeout
関数は常に現在の実行スレッドの後に実行されるため、テストが無限ループに陥ったり、標準の実行に時間がかかりすぎたりしても、実際には停止せず、ただ座って待機します中断せずに回します。ループに陥った場合でも、子 (同じドメインにある) でのコードの実行をキャンセルする方法はありますか?<iframe>