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

jquery - $(function(){...})ブロックをSinonとQUnitで単体テストするにはどうすればよいですか?

私はJSファイルに次のようなコードを持っています(もちろん簡略化されています):

2つの単体テストを作成する必要があります。

  1. ページが読み込まれたときに、スクリプト./getNumber.phpがサーバーにリクエストを送信することを確認してください
  2. #idがクリックされると、アラートが表示されることを確認してくださいnum

明らかに、FakeXmlHTTPRequestが必要で、alert関数をモックします。おそらく、をスパイし$.getJSONます。ただし、2つのアトミックを維持しながらテストを作成する正しい方法がわかりません。

そうすることだけが<script>、各テストのブロックを動的に注入することになると思います。しかし、私はそれが正しくないと感じています。正しい方法は何ですか?ありがとう。

編集:SO以外のコメントに基づいて、私が学ぶ必要があるのは、テスト可能性の低いもののテストケースを考え出すのではなく、テスト可能なJavascriptを作成することです。誰かがこのコードを書き直すことについて私にいくつかのアドバイスを与えることができれば、それも大いに感謝されるでしょう。

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

backbone.js - バックボーンビューで呼び出されるSinonスパイメソッドの初期化

バックボーンのView初期化メソッドでメソッドを実行します。

私は次のようなシノンを使用してこのメ​​ソッドをスパイしようとしています:

その後終了

しかし、テストは失敗します...

何か案は?

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

ajax - ajax jasmine sinon のテスト

「呼び出されると予想される関数」が表示されます。

Ajax 成功メソッドを正常にテストするにはどうすればよいですか?

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

javascript - undefined | 0 | ReferenceError:厳密モードでは、グローバルプロパティ'csrf_token'の暗黙的な作成が禁止されています

ですから、これは私が遭遇した非常に興味深い問題でした。

私は現在backbone.jsを構築しています-Railsアプリ。通常、これは学習目的で作成するだけです。私は(他の優れたRails開発者と同様に)TDD / BDDで最善を尽くしており、カピバラで問題が発生しました。

root_pathの動作をテストするだけの統合仕様があります(バックボーン履歴の開始、初期情報の表示など)。

ジャスミン、シノン、カピバラ/ rspec/webkitでテストを実行しています。私はthoughtbotによる「RspeconRails」の本(ちなみに素晴らしい本)とこのチュートリアルの両方を大まかにフォローしています:http://tinnedfruit.com/2011/03/03/testing-backbone-apps-with-jasmine- sinon.html

上記の仕様を実行しているときに、次のエラーが発生しました。

このエラーをグーグルで検索できるものは実際にはないので、これを整理するのに長い時間がかかりました。

結局、JSで「usestrict-mode」を使用していることに気づきました。基本的に、これはいくつかの新しいEMCA5スクリプト規則を使用します。より多くのコーディングNG集をキャッチし、グローバル変数にアクセスできなくなります。いいこと。

だから私はチェックします、そして私のsinon.jsファイルで、私は見ます:

ファイルの36行目。見よ、私はその行をコメントアウトし、私のテストはうまく機能している。

ここに私の質問があります:なぜ厳密な混乱csrfを使用したのですか?これは私のrailsレイアウトのcsrf_meta_tagsと関係があると思います。可能であれば、この行をsinon jsに戻したいと思います。これは、「正しいこと」だと思います。

誰かがこれについてもっと情報を持っていますか?よろしくお願いします!!

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

node.js - 同様のルートのスーパーテストと複数の実行

最新のURLセグメントがハードコードされた値(編集)であり、もう一方がパラメーター(:slug)を持っているため、一方がより具体的であることを除いて、ほとんど同じ2つのルートをテストしようとしています。

私が経験している問題は、リクエストが実行されると、両方のルート(edit、show)が呼び出され、モックのnever()期待値が渡されないことです:(

私は何か間違ったことをしていますか?どちらかがより具体的である場合、なぜ両方のルートが実行されているのかわかりません...

これはテストです:

そして、これが私が上で嘲笑しているusers-controlle.jsです:

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

jquery - jasmine sinon 同期 ajax 呼び出しが無限ループを引き起こす

jasmine を使用して単体テストを行い、sinon を使用して ajax 呼び出しをモックしています。ただし、これにより、テスト ケースが繰り返し呼び出される無限ループが発生します。ajax 呼び出しは同期的に行われます。ajax 呼び出しを非同期に変更すると、無限ループは発生しません。どんな助けや指針も大歓迎です!

ajax 呼び出しを使用した関数は次のとおりです。

これが私のテストケースです:

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

javascript - Qunit + SinonJs spy.calledOnceinsetTimeoutが未定義です

sinonjsスパイの動作を理解するのに問題があります。

これは私のテストです:

上記のテストをqunitとsinonjsで(sinon-qunitを介して)実行すると、アサーション1に合格しますが、アサーション2に失敗します(setTimeoutコールバック内)。実際、pApi.product.calledOnce(アサーションのメッセージを介して行われるように)コンソールにの値を記録すると、それはundefinedです。

注:これはテストファイルの先頭にあります。

誰かがこの奇妙な行動を説明できますか?pApi.productsetTimeoutコールバック内にあり、両方がないcalledOnce場合は、スパイの有効なプロパティとして持つべきではありませんか?

更新しました

http://api.qunitjs.com/asyncTest/に基づいて、上記の動作が表示される理由を理解しました。

asyncTeststart()関数が呼び出されるまでテストランナーを実行しません。上記のテストは、に変更this.spy(pApi, 'product')したときに機能しましたsinon.spy(pApi, 'product')testどうやら、の代わりにを使用するかどうかに依存しているようです。これは、メソッドの実行asyncTest時に影響します。this.spy

これを理解するために、実際にsinon、qunit、およびsinon-qunitコードを調べる必要があります。

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

javascript - Ember の Sinon を使用した偽のサーバー

バックエンドに ajax 呼び出しを行うコントローラーをテストしたいと考えています。そのため、ジャスミンとシノンを使用したいと思います。sinon でバックエンド サーバーを偽造するために、次のようなことを試しました。

私のコントローラーは次のようになります。

誰かがこれを実行する方法を教えてもらえますか?

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

javascript - sinon.js で cors OPTIONS リクエストをシミュレートする必要がありますか、またはクロスドメイン ajax リクエストをテストするにはどうすればよいですか?

私が取り組んでいる javascript/jquery ライブラリの単体テストを作成しています。多くのクロスドメイン Ajax リクエストを作成する必要があり、次のシナリオを試してシミュレートするためにSinon.jsをいじろうとしています。

  • AJAX「PUT」クロスドメインリクエストを行いますx-domain-abc.com/somestorage
  • 認証用のカスタムヘッダーを含めています
  • これにより、プリフライト OPTIONS リクエストがトリガーされます
  • リクエストは fakeServer によってキャッチされ、いくつかのカスタム ヘッダーで応答する必要があります (プロバイダーが追加することを望んでいるもの ;-)
  • その後、実際の「PUT」が実行され、これも fakeServer によってキャッチされ、それに応じて応答されます。

私のリクエストは次のようになります。

私のテストモジュールでは、現在これを行っています:

O以下が含まれます:

質問:
OPTIONS/preflight はブラウザーによって内部的に処理されるものであり、私がアクセスしたり影響を与えたりすることはできないため、テストすることは意味がありますか?

そうでない場合、CORS リクエストで何をテストすればよいですか?

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

node.js - Express.js アプリの単体テストと統合テスト

Express.js アプリのテストを作成していますが、単体テストと統合テストのどちらを選択すればよいかわかりません。

現在私は実験しました:

単体テスト - スタブ/モック/スパイには Sinon を使用し、モジュールへの依存性注入には Injects を使用します。このアプローチでは、MongoDB とその他の外部メソッドをスタブ化する必要があります。

個々のルートを単体テストしてから、統合テストを使用して正しいルートが実際に呼び出されることを確認することを考えました。

統合テスト - Supertest と Superagent を使用すると、作成するコードが大幅に少なくなります (モック/スタブを作成する必要はありません) が、テスト環境 (データベースなど) が存在する必要があります。

私は Mocha を使用して両方のスタイルのテストを実行しています。

これら2つの異なるアプローチからどのように選択すればよいですか?