4

AngularコントローラーのQUnitテストを作成しています。モジュールの setup 関数で、$httpBackendのオブジェクトを取得するために次のステートメントを記述しました。

 var injector = angular.injector(['ng']);
 var httpBackend = injector.get('$httpBackend');

テストでは、GET のモック応答は次のように構成されます。

httpBackend.expectGET(url).respond([]);

テスト スペックは次のステートメントで失敗し、次のエラーが表示されます: オブジェクトはプロパティまたはメソッドをサポートしていませんexpectGET

同じインジェクター参照を使用して、コントローラー、スコープ注入などの他のオブジェクトを取得できます。

ここで何か見逃しましたか?

4

2 に答える 2

4

この問題についてScott Allenに尋ねたところ、彼は問題を解決するJSFiddleを返信してくれました。彼は、QUnit テストで $httpBackend または angular-mocks.js で定義された他のモックを使用する場合、次のデコレーターが不可欠であると述べました。

$provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);

サンプル アプリケーションでこのアプローチを使用し、学習内容をブログに投稿しました: http://sravi-kiran.blogspot.com/2013/06/UnitTestingAngularJsControllerUsingQUnitAndSinon.html

于 2013-06-24T06:22:07.967 に答える
1

メソッドを含むangular-mocks.jsから$httpBackendを使用するには、angular をセットアップする必要があります。expectGET

しかし、ドキュメントによると、「ジャスミンでのみ利用可能」です。

于 2013-06-03T20:49:45.103 に答える