0

Angular で $http 呼び出しをモックしようとすると問題が発生します。呼び出す$httpBackend.flush()と、次のエラーが表示されます。Error: No pending request to flush !

$rootScope.$digest()ここで同様の問題に関する他の多くの投稿を読みましたが、追加または追加してもまだ機能しないようです$httpBackend.expect

サービス機能をテストしています:

getAll: function (success, error) {
            $http.get(apiRootService.getAPIRootHTTP() + "/items")
                .success(success).error(error);
},

この .spec を使用:

describe ('itemAPI Module', function (){
var $httpBackend, $rootScope, itemAPI, apiRootService;
var projectID = 123;

beforeEach(module('itemAPI'));
beforeEach(module('mApp'));

/**
 * Set up variables pre-insertion
 */
beforeEach( inject( function(_$rootScope_, _$httpBackend_, _apiRootService_){
    $httpBackend = _$httpBackend_;
    $rootScope = _$rootScope_;
    apiRootService = _apiRootService_;
}));


describe('itemAPI factory', function (){

    it('can get an instance of the metaAPI factory', inject(function(_itemAPI_){
        itemAPI = _itemAPI_;
        expect(metaAPI).toBeDefined();
    }));

    describe("get all items", function (){

        it("will return an error", function (){
            var url = apiRootService.getAPIRootHTTP() + "/items";
            $httpBackend.whenGET(url)
                .respond(400);

            var error;
            itemAPI.getAll(
                function(data, status){
                   //this is success
                },
                function(data, status){
                    error = true;
            });

            $httpBackend.expectGET(url);
            $rootScope.$digest();
            $httpBackend.flush();
            expect(error).toBeTruthy();

        });

    });
});
});
4

0 に答える 0