日々精進

新しく学んだことを書き留めていきます

jasmine.clock().install();はsetTimeoutの前に実行する必要がある

jasmine.clock().tickを使うと非同期ロジックのテストを同期的にできて便利だけど、jasmine.clock().tick実行後に実行されるはずのsetTimeoutが実行されなかったことがあった。 原因は以下の順序で実行していたこと。

setTimeout(..., 100);
jasmine.clock().install();
jasmine.clock().tick(101);

正しくは以下のようにinstall→setTimeoutの順にしなければいけない。

jasmine.clock().install();
setTimeout(..., 100);
jasmine.clock().tick(101);

参考:

http://jasmine.github.io/2.0/introduction.html