私は1秒のjQuery .animate
アクションがあり、ページが読み込まれてから5秒後に起動します。私はJasmineのユニットテストコードでSinonタイマーを設定し、アニメーション後のプロパティがそうであるかどうかを確認するために7秒のティックの後にテストします。JasmineユニットテストでSinonを使用してjQueryアニメーションを偽造するにはどうすればよいですか?
正常に動作しないため、私はジャスミンHTMLテストページにアニメーション自体のインスタンスを配置して、何が起こっているのかをよりよく確認しています。 Firefoxとクロームで
、ページのロードが、アニメーション関数が呼び出されると、ユニットテストは直ちに失敗し、(直ちに)アニメーションが目に見えて起こります。
IE、Opera、Safariでは、ページが読み込まれ、アニメーション機能が呼び出され、すぐに単体テストが失敗し、アニメーションが目に見えることはありません。私は(すべてのブラウザで)次られた望んで何
:
- ページが読み込まれると、アニメーション関数が呼び出され、アニメーションは瞬時に完了し、ユニットテストはすぐに成功しました。 Sinon's documentationを見ると
、それは偽のタイマーは以下のプロセスをカバーします: setTimeout
、clearTimeout
、setInterval
、clearInterval
、Date
私はjQueryのアニメーションがどのように動作するかわからないが、私はそれがCSSを使用していると想像トランジション、およびCSSトランジションはSinonのuseFakeTimers
でカバーされていないので、これが問題だと思います。しかし、私が問題について正しいのであれば、まだ解決策が必要です。
私はシノン以外のものを試してみるべきでしょうか? Jasmineのwaits()
はこのテストでは完全に機能しますが、自分のような辛抱強い人にとっては実用的ではありません。
他の提案はありますか?私はJSユニットテストの初心者であることを覚えておいてください。曖昧な答えは私を助けてくれるものです。 ; o)
それは日のカップルをされていると誰も答えていません。私が今やっていることは、これを解決するために、Jasmineのwaits()機能を使用しています。テストは瞬時ではなく、リアルタイムで完了していますが、うまくいっています。シャックス。あなたが私のために持っているかもしれない他のアイデアを投稿してください。ありがとう。 – gcdev
ねえ!あなたはこの問題に対する新しい解決策を見つけましたか? $ .fx.offの答えは完璧に機能しますが、それはまだそれがそうするべき方法ではありません... –
私はしませんでした。私はwaits()を使っています。私は実際にこの質問について忘れてしまった。しかし、デレクの解決策がアレックスのものよりも簡単であることを見て、それが好意的に投票しているので(それはおそらく他の人にとってはうまくいく)、私はそれを試して、それが私のために働くなら答えとしてマークします。 – gcdev