14

get リクエストを実行するファクトリがあります。テストしたいと思います。残念ながら、カルマ テストは、$httpBackend で定義された応答がないことを示しています。

AngularJs 1.2.14、ジャスミン 2.0、カルマ 0.12.0

テストしたいモジュールは次のとおりです。

var appFactory = angular.module('appFactory', []);

appFactory.factory('boxListService', function($http){
    return{
        getList: function(){
            return $http.get('/boxlist').then(function(result){
                return result.data;
            });
        }
    };
});

私のテストはこれです:

describe('Module-Test', function() {

    beforeEach(module('appFactory'));

     it('should call $http.get in getList', inject(function (boxListService, $httpBackend){
        $httpBackend.expectGET('/boxlist');
        boxListService.getList();
        $httpBackend.flush();
      }));
});

メッセージ:

Error: No response defined !
at $httpBackend (D:/nodeJS/host/test_app/src/public/js/libs/angular/angular-mock.js:1206:13)
4

2 に答える 2

25

期待される応答と期待される要求を定義する必要があります。次の形式になります。

$httpBackend.expectGET('/boxlist').respond(HTTP_STATUS_CODE, EXPECTED_RESPONSE);

HTTP_STATUS_CODE は整数です。EXPECTED_RESPONSE は返される値です (多くの場合、オブジェクト リテラルです)。

それらの 1 つだけを定義できます。

詳細については、ngMock httpBackend のドキュメントを参照してください。

于 2014-03-13T09:40:26.973 に答える
1

念のため、それが私に起こったので、質問の正確なケースではありません. 私はこれらの2行を持っていました:

$httpBackend.whenGET(myService.serviceURL).respond(myMock);
$httpBackend.expectGET(myService.serviceURL);

サービスを呼び出すときに何whenを応答するかを定義expectし、メソッドが呼び出されたことを確認したかったのです。

これは機能しません (機能する場合もありますが、その理由はわかりません)。私はどういうわけかexpectオーバーライドしているwhenと思うので、私は得ました

エラー: 応答が定義されていません!

when解決策は、句を削除して追加respond()することでしたexpect

$httpBackend.expectGET(myService.serviceURL).respond(myMock);

フレームワークがそのように動作する理由がわかりません。誰かが知っている場合は、ここで説明して答えを改善してください。

于 2016-04-28T15:04:25.420 に答える