私は現在、APM 1.6.0、ノード0.10.40、およびジャスミン1.3を使用して、Atomパッケージの非同期仕様を作成しています。残念ながら私はsetTimeout
を働かせることはできません。setInterval works setTimeout does not
Jasmine 1.3は、非同期テストを可能にするためにruns
-blocksというシーケンシャルを使用しているので、私はドキュメントからその例を理解しようとしました。
setTimeout
-callbackが呼び出されないことが判明しました。
これが起こる可能性がある理由を探しているうちに、setTimeout
文の名前をsetInterval
に変更しました(両方の機能に同じ署名があるため)。
私は
describe('an asynchronous test',() => {
it('should do some async stuff',() => {
runs(() => {
setInterval(() => {
console.info('async');
}, 75);
setTimeout(() => {
console.info('async2');
}, 75);
});
waitsFor(() => {
return false;
}, 'missing events'); // will wait ~5 seconds.
});
});
は、私は次の出力を取得するには、次のコードを実行した場合:
async
async
async
...
なぜsetTimeout
が完全に機能していない一方で、正常に動作しsetInterval
-function?
編集:質問の最初のバージョンでは、仕様がAtom環境で実行されているとは言いませんでした。恩赦。
[私の作品](http://output.jsbin.com/vemayur)(また、ノード上) –
'のみsetTimeout' 75ms後に1回実行されます。出力が足りない可能性はありますか?それはあなたのコンソールの一番上にあります。多分、より高い数字に時間を設定しようとしますか? – Cuthbert
いくつかのテストフレームワークでは、何らかの形で非同期テストを特定する必要があります。ジャスミンに対して正しく動作していることを確認してください。 –