問題タブ [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.
jquery - sinon.js を使用して jQuery 遅延オブジェクトの「完了」コールバック関数をテストする
Backbone ビューの 1 つに、次の CoffeeScript コードがあります。
そして、完了ブロックで myCallback が呼び出されることをテストしたいと思います。
Mocha.js + Sinon.js でこれを行う方法がわかりません。jquery をスパイし、 when メソッドが呼び出されていることを確認できました。
しかし、done ブロックで同じことを行うことはできません。なぜなら、それを正しく理解していれば、それは when メソッドによって返される遅延オブジェクトに関連しているからです。
私も次のようなことを試しました:
しかし、まだ得ています:
何か案は?:)
jquery - スパイとスタブの違いは何ですか?
使い始めたばかりsinon.js
で、用語に完全に困惑しています。subview's
render メソッドがスタブ化されているスタブを使用しました。しかし、スパイの説明は私には明確ではありません。これら2つの違いを正確に説明できる人はいますか?
また、新しいモデルがコレクションに追加されたかどうかをテストしたい場合、どのようなアプローチになるのだろうかと思っていましたか?
javascript - Javascript:Sinonを使用したモックコンストラクタ
私は、sinonを使用してコンストラクターをモックする方法を理解しようとして髪を引っ張っています。いくつかの引数を受け入れるコンストラクターを呼び出すことで、複数のウィジェットを作成する関数があります。コンストラクターが正しいパラメーターで正しい回数呼び出されることを確認したいのですが、実際にウィジェットを作成したくありません。次のリンクは、コンストラクターをモックする簡単な方法を説明しているように見えますが、私には機能しません。
http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html
コンストラクターをスタブするために次の呼び出しを行うと、次のようになります。
次のエラーが発生します。
Chromeでデバッグすると、スコープ変数のローカルセクションにMyWidgetが表示されますが、ウィンドウの外にMyWidgetプロパティがありません。
どんな助けでも大歓迎です。
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固有の問題ではなく、より一般的な問題である可能性があります。
どんな助けでも大歓迎です。
html - mochaでSinonを使用して、AJAXテスト用にinput type="file"をモックする方法
Mochaで単体テストを取得し、AJAXを介してフォームの送信をテストしています。
手動で入力することはできず<input type="file">
、自動テストを探しているので、この入力を「モック」するための最良の方法を知る必要があります。それでも、マルチパート形式でAJAXを介して送信できます(プレーンテキストの「ファイル」のように、Hello world!)。
文字列を手動で作成できることはわかってい<input type="file">
ますが、オブジェクトの値をモックに「置き換える」必要があります(モックされたオブジェクトに応答できFormData
ます) 。
javascript - sinonを使用してjavascriptのコンストラクターをスパイする
コンストラクターでスパイを作成しようとしていますが、それが呼び出されるかどうかを確認します。以下は私のテストです。私はsinon-chaiを使用しているので、構文は有効ですが、両方のテストが失敗します。
node.js - 別のオブジェクト内で呼び出されたコンストラクターをスパイするにはどうすればよいですか?
操作の一部として別のオブジェクトを作成する関数を持つオブジェクトがあるとします。
Monkey クラスには、先頭に require がありますPaper.Origami
。
テスト内で Origami を作成すればこのテストはパスしますが、Monkey オブジェクト内の作成に任せるとパスしません。これは、2 つのオブジェクト間で必要なパスが異なるためだと思われます。おそらく、ノードはそれらを同じオブジェクトとして認識していません。
質問:オブジェクト内で発生sinon
するオブジェクトの作成をスパイにスパイさせることはできますか?Origami
Monkey
node.js - 呼び出された内部関数をアサートする
foo.js
次のようなファイルがあります。
start()
関数を呼び出すと、ブラウザ ウィンドウが開くことをテストしたいと思います。理想的には、Sinon を使用してスタブアウトし(自動テスト中に実際にブラウザー ウィンドウを開かexec
ないようにするため)、それが呼び出されたことをアサートしたいと考えています。私は多くの方法を試しましたが、どれもうまくいきません。たとえば、次のようになります。exec
foo_test.js
どうすればこれを行うことができますか?
javascript - ジャスミンには sinon.js が必要ですか?
人々がjasmineをsinonと一緒に使用する Web 上の例を見てきました。ただし、ジャスミンはスパイをサポートしています(私が理解しているように、これはシノンが行うことです)。では、問題は、Jasmine を使用する場合、Sinon はまだ有用かということです。Sinon が有用であるとすれば、それが jasmine に追加するのに適している理由は何ですか?
乾杯
javascript - Sinonを使用したJavascriptでのプライベートメンバーのテスト
私はいくつかのjavascriptテストを書き始めており、モジュールコンストラクターのプライベートメンバーを検査するための最良のアプローチが何であるかを理解しようとしています。たとえば、以下のサンプルでは、公開モジュールパターンを使用してパブリックAPIをモジュールに公開しています。ajaxリクエストprivateVar
のコールバック中に正しく設定されていることをテストしたいと思います。$.getJSON
モジュールのパブリックAPIに(意図的に)含まれてit('should update privateVar', ...),
いないため、2番目のテストは機能しません。myModule.privateVar
だから、私の質問は、privateVarをパブリックAPIの一部にすることなく、この種の動作をテストするための最良の方法は何ですか?テストのためにこのコードを因数分解するより良い方法、またはSinonJのようなものを使用してプライベートメンバーをスパイする方法はありますか?