2

spyOn を使用してリダイレクトするために、(goToPage 関数を介して) サービスを呼び出すコントローラーをテストしています。シンプルですが、「スパイを期待したが、機能を得た」と出ています。エラー。私は何を間違っていますか?これは私の仕様です:

var createController,service scope;
beforeEach(inject(function($rootScope, $controller,$injector){
    service = $injector.get('service ');
    scope = $rootScope.$new();
    createController = function() {
        return $controller('controller', {
            '$scope': scope
        });
        spyOn(service , ['redirect']).andCallThrough();
    };
}));

describe('test if service is called', function() {
    it('should call the service', function() {
        var controller=createController();
        scope.goToPage();
        expect(service.redirect).toHaveBeenCalled();
    });
});

});

4

1 に答える 1

4

まず、コードが実行されないように、return を呼び出した後にスパイを定義しました。次に、beforeEach ではなく、テストでスパイを定義します。

var createController,service scope;
beforeEach(inject(function($rootScope, $controller,$injector){
    service = $injector.get('service ');
    scope = $rootScope.$new();
    createController = function() {
        return $controller('controller', {
            '$scope': scope
        });    
    };
}));

describe('test if service is called', function() {
    it('should call the service', function() {
        var controller=createController();
        spyOn(service , ['redirect']).andCallThrough();
        scope.goToPage();
        expect(service.redirect).toHaveBeenCalled();
    });
});
于 2015-10-27T18:14:23.373 に答える