使用Jasmine模拟控制器内的服务功能

时间:2015-11-25 15:07:38

标签: jasmine karma-jasmine

我是Jasmine的新手。

我的服务文件包含一个进行http get方法调用的函数

app.service('myService', ['$http', function($http) {
var incCount = function(total){
        return total++;
    }

    var sampFunction = function(link){

    var promise = $http({
        method : 'GET',
        url : link
    }).success(function(data) {        
        promise = data;
        return data;
    });    
    return promise; 

    }

    return {
        incCount: incCount,
        sampFunction : sampFunction 
    };

}]);

我的控制器具有在服务中调用sampFunction的功能

var url = ....(some url)
myService.sampFunction(url).then(function(res){        
    $scope.data = res[0].myData;
}

任何人都可以帮助我,如何在控制器的规范中模拟这项服务的函数调用? 提前谢谢..

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

describe('myService', function () {

    var $httpBackend, myService;

    beforeEach(module("your-module-name"));

    beforeEach(inject(function (_$httpBackend_, _myService_) {
        $httpBackend = _$httpBackend_;
        myService = _myService_;
    }));

    it("can be instantiated", function () {
        expect(myService).toBeDefined();
    });

    it("should fire GET call to link url", function () {
        var link = "/some-url";
        $httpBackend.expectGET(link).respond({});
        myService.sampFunction(link);
        $httpBackend.verifyNoOutstandingExpectation();
    });
});