問題タブ [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.

0 投票する
3 に答える
3022 参照

javascript - eventSpy で期待値をテストする方法

保存時に backbone.model をテストしようとしています。
これが私のコードです。
コメントからわかるように、toHaveBeenCalledOnceメソッドに問題があります。

PS:
私は jasmine 1.2.0 と Sinon.JS 1.3.4 を使用しています。


console.log(expect(this.eventSpy));

アスダス

0 投票する
1 に答える
3654 参照

javascript - QUnit、Sinon.js、Backboneユニットテストのフラストレーション:sinonspyがBackboneModelイベントコールバックの検出に失敗したようです

次の単体テストコードでは、次のようになります。

コンソールによってデモされたように、関数がバックボーンイベントバインディングから効果的に呼び出されたにもかかわらず、3番目のokは失敗します。

3番目のテストは失敗します ここに画像の説明を入力してください

これは非常に苛立たしいことであり、sinon.jsが私のバックボーンアプリのテストに適しているかどうかについての私の自信を揺るがしました。私は何か間違ったことをしていますか、それともこれは何かが呼び出されたかどうかをsinonが検出する方法の問題ですか?回避策はありますか?

編集:受け入れられた答えのモンキーパッチ法に基づいた、私の特定の例に対する解決策があります。テスト自体に数行の追加のセットアップコードがありますが(モジュール関数はもう必要ありません)、作業は完了します。ありがとう、mu is too short

0 投票する
3 に答える
1299 参照

javascript - js テストでモックを使用するにはどうすればよいですか?

JavaScriptコードをテストするためにQUnitを使用しようとしています。私は単純な機能を持っています:

}

}

}

2 つの質問があります。1) 関数 CalculateBodyMassIndex が Multiply 関数と呼ばれることをどのように確認できますか?

2) 関数 SummAll で $.each が jQuery ライブラリから呼び出されることを確認するにはどうすればよいですか?

回答をお待ちしております。

0 投票する
1 に答える
2810 参照

javascript - バックボーン ビューでレンダリングされた要素の可視性をテストできません

私はBackbone.jsアプリケーションに取り組んでおり、JasmineとSinonでテストを追加しているときに、いくつかのDOM要素の可視性を判断するのに問題がありました.それらのいくつかは、アプリケーションで正しく見ることができたのに、テストで見えないと検出されました. .

問題を再現する小さな例を作成しました。2 つの要素セットに対して同じテストが 2 回実行されます。

  • 最初のセットは SpecRunner.html に直接存在します
  • 2 つ目はバックボーン ビューとしてレンダリングされています

テスト自体は、jQuery.is(':visible')(jasmine-jquery の を介して.toBeVisible()) を使用して、要素が表示されているかどうかを確認しています。2 番目のセットではなく、1 番目のセットに合格します。

ここでコードを github プロジェクトとして共有しました: https://github.com/maximevaly/3789_js

私は何かを忘れたか、おそらくライブラリを誤用したと思いますが、指を置くことはできないので、何か手がかりがあれば... :)

ありがとう!マキシム

0 投票する
1 に答える
2064 参照

jquery - Sinon.js を使用してアプリ サーバーへの呼び出しを防止する

簡単な質問:

sinon.js で javascript をテストして、次の$.ajax2 つのことを行いながらメソッドが呼び出されることを確認します。

  1. 実際にサーバーにアクセスしたくない
  2. サーバーからの応答をモックアップしたい

だからここにJSがあります:

ここに私のテストがあります:

このテストは失敗しましたが、次の例外がありました:

.doneしたがって、jQueryリクエストをモックアップして、呼び出しに正常に応答できる応答を取得できるかどうか疑問に思っていると思いますが、defferedObject()十分に理解していないようです。

0 投票する
1 に答える
408 参照

javascript - sinon.match は未定義のように見えますが、適切なファイルがありませんか?

使用しようとしましたが、sinon サイトからのダウンロード リンクが表示されていないsinon.matchことに気付きました。match

http://jsfiddle.net/GccH5/

次に、 GitHub リポジトリmatchの lib からインクルードしようとしました:

http://jsfiddle.net/GccH5/1/

次に文句を言います: Uncaught TypeError: Object #<Object> has no method 'typeOf'.

GitHub の sinon を使ってみました:

http://jsfiddle.net/GccH5/2/

しかし今、スパイやスタブなどを自分で含める必要があるように見えますか? たとえば、すべてを1つの縮小ファイルにコンパイルするにはどうすればよいですか? または、sinonの推奨される使用方法は何ですか? node/npm/require を介している可能性があると思います...しかし、私はそれらを仕事で使用していません... :(

0 投票する
1 に答える
1748 参照

javascript - jasmine.Clock VS sinon.clock jasmin.Clock.useMock()の使用法の何が問題になっていますか?

ジャスミンを使ってjavascript/coffeescriptでユニットテストを試してみました。とてもいいです。

jasmine.Clock.Mock()を使用して時間を進め、setTimeoutコールバックを起動しようとしています。

残念ながら、jasmine.Clock.tick(1001)は効果がなかったようです。次に、独自のタイムモックを持つsinon.jsを発見しました。これを使用しても、問題はありませんでした。その理由を知りたいのですが。

テストするダミーのjqueryプラグインは次のとおりです。

そして、ここに仕様の両方のバージョンがあります:

0 投票する
1 に答える
541 参照

coffeescript - ジャスミンスパイオンはシノンが機能しない場所で動作しますか?

いくつかのjsテストに取り組んでいて、私はsinonを使おうとしています。draw関数とdraw_association関数をスタブしたい次のテストがあります。ジャスミンのspyOnは機能しているようですが、sinon.spyを使用すると機能しません。理由について何かアイデアはありますか?

0 投票する
1 に答える
281 参照

microsoft-metro - QUnitとSinon、XHRリクエストのテスト

私は単体テストに比較的慣れていないので、意味のある方法でXHRリクエストをテストする方法を見つけようとしています。

1)リクエストはさまざまなスクリプトやその他のリソースをページに取り込みます。正しい数のリソースが読み込まれていること、およびリクエストが成功していることを確認したいと思います。

2)リソースを提供しているサービスへの実際のリクエストを使用する必要がありますか?sinonjs.orgでfakeserverとfakexhrのリクエストを確認しましたが、これらがどのように意味のあるテストを提供できるのか実際にはわかりません。

3)私は既存のコードをテストしていますが、これはかなり無意味であることがわかりますが、それは私がしなければならないことです。そうは言っても、特定のメソッドには多くのコードがあり、さまざまなテストに分解される可能性があります。既存のコードを分解して、解釈された期待値のテストを作成する必要がありますか?または、実際にそこにあるもののテストを作成しますか?....それが理にかなっている場合。

ありがとう、-ジョン

0 投票する
2 に答える
3172 参照

jasmine - SinonJS偽サーバーの自動応答の使用

私はUT/IT用のJasmineでsinonjsの偽のサーバーを使用しています。server.autorespond=trueを設定しました。(server.autoRespondAfterのミリ秒を減らした後でもチェックされます)

問題:サーバーが要求に応答した後、コールバックがトリガーされません(サーバー要求のログとサーバー・オブジェクト自体をチェックして、応答テキストを確認できます)。Jasmineは、成功または失敗のcallback.CalledOnceのチェックに失敗します。

この問題は、次の場合には発生しません。server.respondWith(..)を設定した後にserver.respond()を使用していて、サーバーの応答後にコールバックが適切にトリガーされた。Jasmineは、成功または失敗のコールバックのチェックに合格します。CalledOnce。

私の理解では、自動応答により、サーバーは非同期要求を受け取ったときに自動的に応答します。これには、適切なコールバックの呼び出しが含まれますか?それでもserver.respondを使用する必要がありますか?

ありがとう。

コードスニペット:必要なjsonファイルを読み取り、サーバー応答として送信します。読み取られたjsonファイルは同期呼び出しです(非同期false)。

私のジャスミンスペックでは