問題タブ [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 - $(function(){...})ブロックをSinonとQUnitで単体テストするにはどうすればよいですか?
私はJSファイルに次のようなコードを持っています(もちろん簡略化されています):
2つの単体テストを作成する必要があります。
- ページが読み込まれたときに、スクリプト
./getNumber.php
がサーバーにリクエストを送信することを確認してください #id
がクリックされると、アラートが表示されることを確認してくださいnum
。
明らかに、FakeXmlHTTPRequestが必要で、alert
関数をモックします。おそらく、をスパイし$.getJSON
ます。ただし、2つのアトミックを維持しながらテストを作成する正しい方法がわかりません。
そうすることだけが<script>
、各テストのブロックを動的に注入することになると思います。しかし、私はそれが正しくないと感じています。正しい方法は何ですか?ありがとう。
編集:SO以外のコメントに基づいて、私が学ぶ必要があるのは、テスト可能性の低いもののテストケースを考え出すのではなく、テスト可能なJavascriptを作成することです。誰かがこのコードを書き直すことについて私にいくつかのアドバイスを与えることができれば、それも大いに感謝されるでしょう。
backbone.js - バックボーンビューで呼び出されるSinonスパイメソッドの初期化
バックボーンのView初期化メソッドでメソッドを実行します。
私は次のようなシノンを使用してこのメソッドをスパイしようとしています:
その後終了
しかし、テストは失敗します...
何か案は?
ajax - ajax jasmine sinon のテスト
「呼び出されると予想される関数」が表示されます。
Ajax 成功メソッドを正常にテストするにはどうすればよいですか?
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に戻したいと思います。これは、「正しいこと」だと思います。
誰かがこれについてもっと情報を持っていますか?よろしくお願いします!!
node.js - 同様のルートのスーパーテストと複数の実行
最新のURLセグメントがハードコードされた値(編集)であり、もう一方がパラメーター(:slug)を持っているため、一方がより具体的であることを除いて、ほとんど同じ2つのルートをテストしようとしています。
私が経験している問題は、リクエストが実行されると、両方のルート(edit、show)が呼び出され、モックのnever()期待値が渡されないことです:(
私は何か間違ったことをしていますか?どちらかがより具体的である場合、なぜ両方のルートが実行されているのかわかりません...
これはテストです:
そして、これが私が上で嘲笑しているusers-controlle.jsです:
jquery - jasmine sinon 同期 ajax 呼び出しが無限ループを引き起こす
jasmine を使用して単体テストを行い、sinon を使用して ajax 呼び出しをモックしています。ただし、これにより、テスト ケースが繰り返し呼び出される無限ループが発生します。ajax 呼び出しは同期的に行われます。ajax 呼び出しを非同期に変更すると、無限ループは発生しません。どんな助けや指針も大歓迎です!
ajax 呼び出しを使用した関数は次のとおりです。
これが私のテストケースです:
javascript - Qunit + SinonJs spy.calledOnceinsetTimeoutが未定義です
sinonjsスパイの動作を理解するのに問題があります。
これは私のテストです:
上記のテストをqunitとsinonjsで(sinon-qunitを介して)実行すると、アサーション1に合格しますが、アサーション2に失敗します(setTimeoutコールバック内)。実際、pApi.product.calledOnce
(アサーションのメッセージを介して行われるように)コンソールにの値を記録すると、それはundefined
です。
注:これはテストファイルの先頭にあります。
誰かがこの奇妙な行動を説明できますか?pApi.product
setTimeoutコールバック内にあり、両方がないcalledOnce
場合は、スパイの有効なプロパティとして持つべきではありませんか?
更新しました
http://api.qunitjs.com/asyncTest/に基づいて、上記の動作が表示される理由を理解しました。
asyncTest
start()
関数が呼び出されるまでテストランナーを実行しません。上記のテストは、に変更this.spy(pApi, 'product')
したときに機能しましたsinon.spy(pApi, 'product')
。test
どうやら、の代わりにを使用するかどうかに依存しているようです。これは、メソッドの実行asyncTest
時に影響します。this.spy
これを理解するために、実際にsinon、qunit、およびsinon-qunitコードを調べる必要があります。
javascript - Ember の Sinon を使用した偽のサーバー
バックエンドに ajax 呼び出しを行うコントローラーをテストしたいと考えています。そのため、ジャスミンとシノンを使用したいと思います。sinon でバックエンド サーバーを偽造するために、次のようなことを試しました。
私のコントローラーは次のようになります。
誰かがこれを実行する方法を教えてもらえますか?
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 リクエストで何をテストすればよいですか?
node.js - Express.js アプリの単体テストと統合テスト
Express.js アプリのテストを作成していますが、単体テストと統合テストのどちらを選択すればよいかわかりません。
現在私は実験しました:
単体テスト - スタブ/モック/スパイには Sinon を使用し、モジュールへの依存性注入には Injects を使用します。このアプローチでは、MongoDB とその他の外部メソッドをスタブ化する必要があります。
個々のルートを単体テストしてから、統合テストを使用して正しいルートが実際に呼び出されることを確認することを考えました。
統合テスト - Supertest と Superagent を使用すると、作成するコードが大幅に少なくなります (モック/スタブを作成する必要はありません) が、テスト環境 (データベースなど) が存在する必要があります。
私は Mocha を使用して両方のスタイルのテストを実行しています。
これら2つの異なるアプローチからどのように選択すればよいですか?