JQuery アニメーションのテストで問題が発生しました。問題は、モード中にJQuery がエフェクトの実行後に関数をjasmine.Clock.useMock()
呼び出さないことです。complete
論理:
$('#mydiv').fadeOut('normal', function () {
// this is called AFTER the test ends
// but should be called after jasmine.Clock.tick(1000);
$(this).remove();
})
仕様:
it('should pass', function () {
jasmine.Clock.useMock();
// call logic
jasmine.Clock.tick(1000);
// using jasmine-jquery matcher
expect($('#mydiv')).not.toExist();
})
次のメッセージでテストが失敗します。
Expected '<div id="mydiv" style="opacity: 0; "></div>' not to exist.
効果は正常に終了したが、complete
関数が呼び出されなかったことを意味します。実際には、テスト ランナーが実行を終了した後に呼び出されます。
JQuery に報告するのがバグなのか、Jasmine 開発者に報告するのがバグなのかわからない。多分誰かが回避策を提案するでしょう。
私の目標は、ロジックの実行後に要素が削除されたことをテストすることなので、not.toExist()
マッチャーが必要です。