問題タブ [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 投票する
2 に答える
1452 参照

jquery - sinon.js を使用して jQuery 遅延オブジェクトの「完了」コールバック関数をテストする

Backbone ビューの 1 つに、次の CoffeeScript コードがあります。

そして、完了ブロックで myCallback が呼び出されることをテストしたいと思います。

Mocha.js + Sinon.js でこれを行う方法がわかりません。jquery をスパイし、 when メソッドが呼び出されていることを確認できました。

しかし、done ブロックで同じことを行うことはできません。なぜなら、それを正しく理解していれば、それは when メソッドによって返される遅延オブジェクトに関連しているからです。

私も次のようなことを試しました:

しかし、まだ得ています:

何か案は?:)

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

jquery - スパイとスタブの違いは何ですか?

使い始めたばかりsinon.jsで、用語に完全に困惑しています。subview'srender メソッドがスタブ化されているスタブを使用しました。しかし、スパイの説明は私には明確ではありません。これら2つの違いを正確に説明できる人はいますか?

また、新しいモデルがコレクションに追加されたかどうかをテストしたい場合、どのようなアプローチになるのだろうかと思っていましたか?

0 投票する
9 に答える
82077 参照

javascript - Javascript:Sinonを使用したモックコンストラクタ

私は、sinonを使用してコンストラクターをモックする方法を理解しようとして髪を引っ張っています。いくつかの引数を受け入れるコンストラクターを呼び出すことで、複数のウィジェットを作成する関数があります。コンストラクターが正しいパラメーターで正しい回数呼び出されることを確認したいのですが、実際にウィジェットを作成したくありません。次のリンクは、コンストラクターをモックする簡単な方法を説明しているように見えますが、私には機能しません。

Jasmineを使用してコンストラクターをスパイする

http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html

コンストラクターをスタブするために次の呼び出しを行うと、次のようになります。

次のエラーが発生します。

Chromeでデバッグすると、スコープ変数のローカルセクションにMyWidgetが表示されますが、ウィンドウの外にMyWidgetプロパティがありません。

どんな助けでも大歓迎です。

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

javascript - クラス定義の一部としてSinon.JSスパイ関数を指定するにはどうすればよいですか?

Require.jsとBackbone.Marionetteを使用してBackbone.jsアプリを作成し、Chai、Sinon、およびSinon-ChaiでMochaを使用してテストしています。私は通常、JarrodOversonのBackboneMarionetteとRequire.JSTODOサンプルをアプリケーション構造のリファレンスとして使用し、 JimNewberyのBackboneアプリのテストに関する投稿を単体テストのリファレンスとして使用しています。

私の問題は、MarionetteItemViewをMarionetteApplicationオブジェクトに追加することをテストしようとします。ItemViewが追加されていることをテストする最良の方法は、そのrender()メソッドが呼び出されるのを監視することだと思いました。Marionetteはデフォルトのrender()実装を提供しているので、コールバックにはSinonスパイを使用するのが最善だと思いましたonRender()

以下に示すように、Squire.JSを使用してItemViewのスタブクラスを返しました。

Chrome経由でMochaを実行すると、「スパイが少なくとも1回呼び出されたと予想されましたが、呼び出されなかった」というエラーが表示されます。onRender()ただし、以下に示すように、コールバックとしてSinonスパイ関数を指定した場合

called()メソッドが関数ではないというエラーが表示されます。

クラス定義のメソッドとしてSinonスパイ関数を指定する方法はありますか?あるいは、このコードをテストするためのより良い方法はありますか?私はJavaScriptにかなり慣れていないので、これはSinon固有の問題ではなく、より一般的な問題である可能性があります。

どんな助けでも大歓迎です。

0 投票する
0 に答える
2264 参照

html - mochaでSinonを使用して、AJAXテスト用にinput type="file"をモックする方法

Mochaで単体テストを取得し、AJAXを介してフォームの送信をテストしています。

手動で入力することはできず<input type="file">、自動テストを探しているので、この入力を「モック」するための最良の方法を知る必要があります。それでも、マルチパート形式でAJAXを介して送信できます(プレーンテキストの「ファイル」のように、Hello world!)。

文字列を手動で作成できることはわかってい<input type="file">ますが、オブジェクトの値をモックに「置き換える」必要があります(モックされたオブジェクトに応答できFormDataます) 。

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

javascript - sinonを使用してjavascriptのコンストラクターをスパイする

コンストラクターでスパイを作成しようとしていますが、それが呼び出されるかどうかを確認します。以下は私のテストです。私はsinon-chaiを使用しているので、構文は有効ですが、両方のテストが失敗します。

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

node.js - 別のオブジェクト内で呼び出されたコンストラクターをスパイするにはどうすればよいですか?

操作の一部として別のオブジェクトを作成する関数を持つオブジェクトがあるとします。

Monkey クラスには、先頭に require がありますPaper.Origami

テスト内で Origami を作成すればこのテストはパスしますが、Monkey オブジェクト内の作成に任せるとパスしません。これは、2 つのオブジェクト間で必要なパスが異なるためだと思われます。おそらく、ノードはそれらを同じオブジェクトとして認識していません。

質問:オブジェクト内で発生sinonするオブジェクトの作成をスパイにスパイさせることはできますか?OrigamiMonkey

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

node.js - 呼び出された内部関数をアサートする

foo.js次のようなファイルがあります。

start()関数を呼び出すと、ブラウザ ウィンドウが開くことをテストしたいと思います。理想的には、Sinon を使用してスタブアウトし(自動テスト中に実際にブラウザー ウィンドウを開かexecないようにするため)、それが呼び出されたことをアサートしたいと考えています。私は多くの方法を試しましたが、どれもうまくいきません。たとえば、次のようになります。execfoo_test.js

どうすればこれを行うことができますか?

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

javascript - ジャスミンには sinon.js が必要ですか?

人々がjasmineをsinonと一緒に使用する Web 上の例を見てきました。ただし、ジャスミンはスパイをサポートしています(私が理解しているように、これはシノンが行うことです)。では、問題は、Jasmine を使用する場合、Sinon はまだ有用かということです。Sinon が有用であるとすれば、それが jasmine に追加するのに適している理由は何ですか?

乾杯

0 投票する
4 に答える
10090 参照

javascript - Sinonを使用したJavascriptでのプライベートメンバーのテスト

私はいくつかのjavascriptテストを書き始めており、モジュールコンストラクターのプライベートメンバーを検査するための最良のアプローチが何であるかを理解しようとしています。たとえば、以下のサンプルでは、​​公開モジュールパターンを使用してパブリックAPIをモジュールに公開しています。ajaxリクエストprivateVarのコールバック中に正しく設定されていることをテストしたいと思います。$.getJSON

モジュールのパブリックAPIに(意図的に)含まれてit('should update privateVar', ...),いないため、2番目のテストは機能しません。myModule.privateVar

だから、私の質問は、privateVarをパブリックAPIの一部にすることなく、この種の動作をテストするための最良の方法は何ですか?テストのためにこのコードを因数分解するより良い方法、またはSinonJのようなものを使用してプライベートメンバーをスパイする方法はありますか?