問題タブ [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.
angularjs - $httpBackend を使用した角度テストが「400 throw」エラーで失敗する
何時間も $httpBackend を使って NewPostController をテストしようとしてきました。問題は、応答に 2xx 以外のステータス コードを設定すると、テストが失敗することです。
NewPostController には次のメソッドがあります。
失敗パスのテストに問題があります。
テストは「400 throw」というメッセージで失敗します (コールスタックなし)。サブテストの順序を変更し、expectPOST の代わりに whenPOST を使用して、Angular ドキュメント ( https://docs.angularjs.org/api/ngMock/service/ $httpBackend) で行うようにメソッドを組み合わせようとしましたが、成功しませんでした。
助けてください。
編集:
PostService を見ると、「400 がスローされた」というのは理にかなっていますが、エラーは angular によって処理されると予想していました。この記事の「ネストされたサービス呼び出しの問題の処理」セクションのために、私はそれを投げました。これは deferred.resolve/reject メカニズムの短いバージョンであると想定されています。
javascript - AngularJS + Jasmine 単体テスト - $httpBackend の応答がスコープ値を更新しない
私は現在、角度コードを単体テストする方法を学ぼうとしており、Jasmine を使用しています。次の AngularJS 固有のコードがあります。
ここに私のジャスミンコードがあります:
私の問題は、最後のitブロック内のコメントアウトされたexpectステートメントにあります。httpBackend Get リクエストでレスポンスを指定すると、角度範囲が更新されると思いました。ただし、私の specRunner.html ページには次のエラーがあります。
明らかに、これは $scope.externalData が更新されないことを意味します。私が台無しにした場所を誰かが見ることができますか?
angularjs - $httpBackend return promise 値の問題
AngularJS を使用してログイン機能を実装したいと考えており、バックエンドは Rails にあります。$httpBackend を使用して実装することにしましたが、問題があります。
$httpBackend関数に入ると、データベースからの最新のトークンでトークンを更新しますが、それが起こっていないように見えるサービスに値を返す必要があります。これが約束や延期などに関係していることは知っていますが、私はそれらに精通していません。
これは私のコードです
javascript - コントローラーがページの読み込み時にリクエストを行うと、$httpBackend.expectGET が失敗する
私はこれを解決しようとして何時間も生きてきました。コントローラーで、ページの読み込み時に HTTP リクエストを行うメソッドを呼び出します。
単体テストでこれを期待しています:
しかし、カルマは報告します
それは意味がありません。テストでいつ/どこでexpectGET/コントローラーを作成するかのすべての組み合わせを試しましたが、何も役に立ちませんでした。次に、ページの読み込み時にデータを取得し、そのためのテストを実行する別のコントローラーがあることに気付きました。違いは、HTTP 要求が発生するためにルート パラメーターが存在する必要があることです。だから私は電話を
テストに foo パラメータを挿入しました。合格しました!明らかに、訪問者が URL でそのようなものを見たいと思う人はいません。代わりに whenGET を使用しても合格になります。
誰かがこの問題の解決を手伝ってくれますか? ほぼ2年前にこれについて尋ねている人を見つけましたが、彼は何の答えも得ませんでした(削除された私のものを除いて)。
angularjs - whenGET を使用してフラッシュする保留中の要求はありませんが、expectGET は使用しません
$httpBackend を使用して角度サービスをテストすると、予期しない結果が得られます。
httpBackend.expectGET を使用してテストを実行すると、テストは期待どおりに機能します。ただし、 whenGET を使用してまったく同じテストを実行すると、テストは失敗し、「フラッシュする保留中の要求はありません」というメッセージが表示されます。
テスト中のサービスは次のとおりです。
テストは次のとおりです。
「フラッシュする保留中の要求はありません」というメッセージでGETが失敗した場合の両方で、expectGETが渡されます。いくつかの投稿で見たように、 $rootScope.$digest() を使用してみましたが、うまくいきませんでした。テストは、expectGETとexpectWHENを除いて同じなので、何が起こっているのかわからない?
そして、ここにエラーの詳細があります:
- アンギュラー1.2.28
- angular-mocks 1.2.28
- ジャスミン 2.0.0
javascript - AngularJS & Karma-Jasmine - $httpbackend は、保留中のリクエストが 1 つ以上ある場合にのみフラッシュします
$httpbackend.flush();
保留中のリクエストがある場合にのみ呼び出すことはできますか? だから私は決して得ません
エラー: フラッシュされていない要求: 1,2,3,...,n
または
エラー: 保留中のフラッシュ要求はありません!
javascript - AngularJS と Karma-Jasmine - verifyNoOutstandingExpectation(); の場合は機能しません。またはverifyNoOutstandingRequest(); 一人で立つ
フラッシュされていない http リクエストが 1 つあるので、このようにすると
それは期待どおりに動作し、私は得る
エラー: フラッシュされていないリクエスト: 1
エラーメッセージは から来ていますが$httpBackend.verifyNoOutstandingRequest();
、このようにすると
エラーはスローされません。
なぜそうなのですか?両方の方法を常に一緒にしておく必要がありますか?
angularjs - Angular ngmock httpBackend - 1つのリクエストを除いてすべて無視しますか?
単体テストを書くのは初めてなので、これがばかげた質問である場合は申し訳ありません。サービス呼び出しからのモック データに依存する Angular コントローラーでメソッドをテストしようとしていて、そのサービス呼び出し (ngResource) もモックしたい場合、コントローラーで行われた他の要求を httpBackend に無視させる方法はありますか初期化中?
whenGET または expectGET 定義を before ブロックに配置し、テスト内でコントローラーのみをインスタンス化しようとしましたが、flush() を呼び出すと、httpBackend が他の要求 (エラー: 予期しない要求) を予期していることが常にわかります。他のすべてのリクエストのモックを作成したくはありません。このテストに使用しているものだけです。
もちろん、これはばかげた考えかもしれません。偽のデータを直接提供することもでき、コントローラーのメソッドと一緒にサービスをテストすることもできないからです。これが機能することを確認しました。おそらく正しい答えは、コントローラー内からサービスをテストするべきではないということです。
FWIW、Sinon fakeServer も使用してみましたが、どうやら Angular の XHR 実装にも対応していないようです (サーバーは応答しません)。
angular-resource - 複数の連続した httpBackend リクエストにより、予期しないリクエストが発生する
条件が満たされるまでリソースをポーリングするシーケンスをテストしています。
以下のテストは失敗しますError: Unsatisfied requests: GET /user_workshops/1
テスト順序を並べ替えて、2 番目を 2 番目のexpectGET
直前に配置しようとしましたhttpBackend.flush()
が、次のようになります。