問題タブ [httpbackend]

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 に答える
818 参照

protractor - $httpBackend で分度器を正しく使用する

分度器がどのように機能するかについて読んだことがあります。いくつかの E2E テストを書きましたが、それでも$httpBackendサービスで使用することに不快感を覚えており、全体像の重要な部分が欠けている可能性があると思います。

HTTP 呼び出しをモック化するには、Angular のモジュール内で提供される$httpBackendサービスを使用する必要があります。ngMockE2Eそのモジュールをテストしているアプリケーションに含めるには、メイン モジュールをブートストラップするときに、依存関係として次のように構成する必要があります。

これは事実上、E2E テスト用に本番環境の初期化とは別の初期化を行う必要があることを意味します。これは、別の が必要であることも意味しindex.htmlます。

ルートと「ほぼ」同じであるこれらの 2 つの追加ファイルを維持するのは面倒に思えます。さらに、個別のインデックスとモジュール定義は、テストが本番環境とはわずかに異なるアプリケーションでテストされることを意味します。これは、私にとってはその目的に反しているようです。

ここのパズルを正しく理解していますか、それとも何か抜けていますか? Angular でバックエンドレス E2E テストを実行するためのより良いソリューションはありますか? または、少なくとも、メンテナンスの煩わしさが本当に避けられない場合、その影響を最小限に抑えるためのいくつかの回避策があるのでしょうか?

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

angularjs - $httpBackend が応答しないのはなぜですか?

Karma を使用して一部の AngularJS コードの単体テストを学習するのに苦労しており、$httpBackend の使用に夢中になっています。get リクエストをモックし、 への失敗しない呼び出しが見られると予想される場所のみを示す、テストの簡易バージョンを作成しましたhttpBackend.get(...)

11 行目で失敗しています。ログに表示される内容は次のとおりです。

私は何が欠けていますか?

[編集: ここで私が間違ったところです... $httpBackend を $http のモックであるかのように扱っていましたが、そうではありませんでした。次のコードは成功します。]

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

angularjs - $httpBackend で応答を遅らせる

私の見解では、API からの応答を受け取るまで表示されるアニメーションをロードしています。

テストを行うために、$httpBackendAngular モジュールを使用します。このようなもの:

問題

ローディングアニメーションが表示されることを確認するテストを書きたいと思います。

私は試した:

しかし、私は合格しません。したがって、$httpBackend からの応答を条件付きで遅らせる必要があると思います。

このブログ投稿を見つけましたhttp://endlessindirection.wordpress.com/2013/05/18/angularjs-delay-response-from-httpbackend/

ただし、その構成メソッドを挿入すると、すべてのテストが失敗し (テンプレートが時間内に読み込まれないためだと思います)、すべての応答が遅延するため、実際には必要ありません。

では、その 1 回の呼び出しに対する応答を遅らせるにはどうすればよいでしょうか。理想的には、そのテストのためだけに遅らせたいと思います。

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

javascript - $urlRouterProvider は $httpBackend エラーを作成します

$httpBackend サービスを使用して、サービス テストのリクエストをモックしています。ただし、テストでエラーが発生し始め、リクエストが実際に行われているのではなく、嘲笑されていることを示していました。アプリ構成で提供した catch all ルートをコメントアウトすると、すべてのテストに合格しました。なぜこれが起こっているのか誰でも説明できますか?以下は私のコードとエラーです。

編集 ウィッシャーのスニペットを含めるように編集しましたが、正しく使用しているかどうかはわかりません。

app.js

AssetManager.js

AssetManager.spec.js

エラーはすべてのリクエストで同じ

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

javascript - $httpBackend がサーバーへのリクエストを無視するようにする

次のコントローラーがあります (インスタンス化時に を明示的に呼び出すことに注意して$scope.getNotifications()ください)。

次に、いくつかの単体テストを行います (コントローラーがそれぞれの前にインスタンス化されることに注意してください)。

今まではすべて順調です。すべてのテストに合格します。しかし、HTTP 呼び出しを必要としない新しいテスト (以下を参照) を追加すると失敗しafterEach()ますremoveNotification()。これはカルマからのエラー メッセージです: PhantomJS 1.9.7 (Windows 8) notificationCenterController removeNotification should remove the given notification from the list FAILED Error: Unexpected request: GET api/v1/notifications No more request expected

私のテストのほとんどには http 呼び出しがあるため、afterEach に検証を配置することは理にかなっています。N-1 テストで afterEach ボディをコピーして貼り付けるのを避けるために、他にどのようなオプションが必要か疑問に思っていました。電話を無視するように指示する方法はありますか?$httpBackend

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

angularjs - $httpBackend および angular-translate ディレクティブを使用したテスト

翻訳機能がまだ機能するかどうかをテストするために、 $httpBackend と angular-translate がどのように連携するかを理解しようと多くの時間を費やしています。

私はこの時点で、この問題を解決する方法が本当にわかりません。

私のテストはもちろん失敗します。問題は、1) データを含む JSON を実際に取得する方法と、2) 「ここにデータがあります。作業を行ってください」という指示を言う方法がわからないということです。

編集:

わかりました、問題についていくつかの光。このAngularモジュールのテスト(https://github.com/angular-translate/angular-translate/tree/master/test/unit/directive)を見ていましたが、動作させることができました:

しかし、私が望むのは、このソリューションを JSON を返す適切な AJAX 呼び出しと組み合わせて、これも行われたことをテストすることです。

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

angularjs - AngularJS のテスト: $httpBackend のモック - 成功とエラーのメソッドの処理

更新:無効な ASCII 文字を含むhttpBackend.when要求を更新することで、問題の範囲をさらに絞り込み、予期しない要求エラー

現在のコード ブロックにPlunkerを添付しました。

しかし、成功とエラーのメソッド操作のトリガーを効果的にテストすることはまだ困難です。また、メッセージのブロードキャストをチェックするための期待値を追加する必要があります。

上記のシナリオをテストするために、Plunker に含めたハックを考案しましたが、これらのシナリオをテストするにはもっと良い方法があるはずだと思います。

この問題を克服し、応答メッセージのステータスをテストする方法についてのリードをいただければ幸いです。

問題

テスト用に $httpBackend の期待値/応答を設定しましたが、$httpBackend.flush() を実行すると失敗し、以下のエラーが表示されます。

エラーメッセージが表示されました

この問題のドメインについて説明している便利なリンクをいくつか見つけましたが、問題の範囲を絞り込むのにいくらか役立ちました。しかし、この単体テストが失敗する具体的な理由はまだわかりません。

役に立つスタック オーバーフローの質問

役立つ外部リソース

また、ここで提案されているように、テストで $http リクエストを起動するときに、flush() 呼び出しを移動して、$apply または $digest を呼び出してみました。

テストする AngularJS サービス

サービスのテストに使用される仕様

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

angularjs - $httpBackend 応答未定義

と同様の動作を取得しようとしています

UnitTest.coffee :

どういうわけrespond()か返っreguestHandlerて回らない undefined' のプロパティ 'respond' を読み取れません。私は何を間違っていますか?