問題タブ [sinon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - nodeunit で sinon モックを使用する
特にモッキングを行うために、 nodeunitでsinon を使用することを学んでいます。推奨されるアプローチは、sinon-nodeunitを使用することです。documentationによると、モックは各テスト関数mock
のパラメーターのメソッドを介して利用できるはずです。test
ただし、これは機能しないようです。nodeunit
以下を含むファイルで
実行すると —</p>
— 私はこれを得る:
sinon
経由で (1.1.1) とsinon-nodeunit
(0.1.2)の両方の現在のバージョンをインストールしましnpm install
た。
javascript - Jasmine 単体テストで Sinon を使用して jQuery アニメーションを偽造するにはどうすればよいですか?
.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)
javascript - Sinon.JSでgoogle.mapsライブラリをスタブアウトする方法は?
私は次のようなバックボーンモデル内でgoogle.mapsライブラリを使用しています(coffeescript):
私のテストでは、インスタンス化しようとするとRoute
、明らかに問題が発生します。google
この問題が発生しないように、テストでスタブアウトするにはどうすればよいですか?
mysql - Node.jsでMySQL(ORMなし)をどのようにモックしますか?
私はNode.js
felixgeのnode-mysql
クライアントで使用しています。ORMを使用していません。
私はVowsでテストしており、おそらくSinonを使用して、データベースをモックできるようにしたいと考えています。私は(を除いて)DAL自体を実際に持っていないので、これをどうやって行うのnode-mysql
かよくわかりません。私のモデルはほとんどが単純なCRUDで、多くのゲッターがあります。
これを達成する方法について何かアイデアはありますか?
testing - SinonJS「すでにラップされているajaxをラップしようとしました」
テストを実行すると、上記のエラーメッセージが表示されました。以下は私のコードです(テストにはBackbone JSとJasmineを使用しています)。なぜこれが起こるのか誰かが知っていますか?
javascript - Sinon はイベント ハンドラのコールバックをスパイしていないようです
Jasmin、Simon、jasmin-simon でバックボーン ビューをテストしています。
コードは次のとおりです。
実際、すべてのテストに合格しましたが、1 つだけです。addMessage
にアイテムを追加するたびに が呼び出されることを確認したいと思いますthis.collection
。
ご覧のとおりaddMessage
、確かに呼ばれています。(コンソールにログを記録し、必要に応じて呼び出します。呼び出しthis.messageView
のスパイで見逃しているものは何addMessage
ですか?
ありがとう、ヴィクトル
javascript - Backbone.jsの解析メソッド
sinon.jsとjasmine.jsを使用して、最初のbackbone.jsアプリケーションの単体テストを試みています。
この特定のテストケースでは、sinon.js fakeServerメソッドを使用して、次の構造のダミー応答を返しました。
したがって、以下のテストケースで実際にfetch呼び出しを呼び出すと、3つのモデルが正しく返されます。コレクションのparseメソッドで、ルートの「tasks」キーを削除し、backbone.jsのドキュメントに記載されているオブジェクトの配列のみを返すようにしました。しかし、これを行うと、モデルはコレクションに追加されず、collection.lengthは0を返します。
タスクコレクション
ここで何が間違っているのか教えていただけますか?
javascript - backback.jsクリックイベントスパイがjasmine.jsとsinon.jsを使用して呼び出されていません
私はbackbone.js、jasmine.js、sinon.jsを使用してボタンクリックをテストしようとしています。しかし、次のテストケースは失敗します。私はスパイを使用して、呼び出されているかどうかを追跡しています。これを手伝ってくれませんか。
ありがとう。
新しいタスクテンプレート
NewTaskView
ジャスミンテストケース
ジャスミン出力