2015-11-25 2 views
0

Я новичок в Jasmine.mocking функция обслуживания внутри контроллера с помощью 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; 
} 

может кто-нибудь помочь мне, о том, как издеваются над этим вызов функции службы внутри спецификации для контроллера? Заранее спасибо ..

+0

Возможный дубликат [Как поиздеваться JQuery с жасмином] (http://stackoverflow.com/questions/7742435/how-to -mock-jquery-with-jasmine) –

+0

@JasonD: Этот вопрос совершенно другой. Этот вопрос связан с издевательством службы, которая имеет http-вызов. – Nizam

+0

Можете ли вы показать нам, что вы пробовали? – yarons

ответ

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