私はこれを解決しようとして何時間も生きてきました。コントローラーで、ページの読み込み時に 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年前にこれについて尋ねている人を見つけましたが、彼は何の答えも得ませんでした(削除された私のものを除いて)。