1

私はこれを解決しようとして何時間も生きてきました。コントローラーで、ページの読み込み時に HTTP リクエストを行うメソッドを呼び出します。

$scope.getPosts = function() { /* call to service */ };
/// Call it immediately
$scope.getPosts();

単体テストでこれを期待しています:

$httpBackend.expectGET("/posts?bar=bar&foo=foo").respond(200, []);

しかし、カルマは報告します

Error: Unexpected request: GET /posts?bar=bar&foo=foo
No more request expected in ...

それは意味がありません。テストでいつ/どこでexpectGET/コントローラーを作成するかのすべての組み合わせを試しましたが、何も役に立ちませんでした。次に、ページの読み込み時にデータを取得し、そのためのテストを実行する別のコントローラーがあることに気付きました。違いは、HTTP 要求が発生するためにルート パラメーターが存在する必要があることです。だから私は電話を

if ($routeParams.foo) {
  $scope.getPosts();
}

テストに foo パラメータを挿入しました。合格しました!明らかに、訪問者が URL でそのようなものを見たいと思う人はいません。代わりに whenGET を使用しても合格になります。

誰かがこの問題の解決を手伝ってくれますか? ほぼ2年前にこれについて尋ねている人を見つけましたが、彼は何の答えも得ませんでした(削除された私のものを除いて)。

4

0 に答える 0