.animate
ページの読み込みから 5 秒後に起動する 1 秒の jQueryアクションがあります。Jasmine ユニット テスト コードで Sinon タイマーを設定し、7 秒後にテストして、アニメーション後のプロパティが適切であるかどうかを確認します。
うまく動かないので、アニメーション自体のインスタンスを Jasmine HTML テスト ページに配置して、何が起こっているかをよく確認しました。
Firefox と Chrome では、ページが読み込まれ、アニメーション関数が呼び出され、単体テストがすぐに失敗し、その後 (これもすぐに) アニメーションが目に見えて発生します。
IE、Opera、および Safari では、ページが読み込まれ、アニメーション関数が呼び出され、単体テストがすぐに失敗し、アニメーションが表示されません。
私が望んでいたのは次のことでした(すべてのブラウザで):
- ページが読み込まれ、アニメーション関数が呼び出され、アニメーションが瞬時に完了し、単体テストがすぐに成功します。
Sinon のドキュメントを見ると、偽のタイマーは次のプロセスをカバーしています:
setTimeout
, clearTimeout
, setInterval
, clearInterval
,Date
jQueryのアニメーションの仕組みはわかりませんが、トランジションにCSSを使っているのではないかと思いますし、SinonのuseFakeTimers
ではCSSトランジションがカバーされていないので、これが問題だと思います。ただし、問題について私が正しければ、まだ解決策が必要です。
シノン以外も試してみようかな。Jasmine'swaits()
はこのテストで完璧に機能しますが、私のようなせっかちな人々にとっては信じられないほど実用的ではありません.
他の提案はありますか?私は JS 単体テストに慣れていないので、あいまいな回答は助けになるどころか混乱してしまうことを覚えておいてください。;o)