使用Jasmine模拟控制器内的服务函数

使用Jasmine模拟控制器内的服务函数,jasmine,karma-jasmine,Jasmine,Karma Jasmine,我不认识茉莉花 我的服务文件包含一个进行http get方法调用的函数 app.service('myService', ['$http', function($http) { var incCount = function(total){ return total++; } var sampFunction = function(link){ var promise = $http({ method : 'GET',

我不认识茉莉花

我的服务文件包含一个进行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;
}
有谁能帮助我,在控制器规范中如何模拟此服务的函数调用?
提前感谢。

这应该可以做到:

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();
    });
});

可能重复@JasonD:这个问题完全不同。这个问题与模拟具有http调用的服务有关。您能告诉我们您尝试了什么吗?