Протестируйте сервис Angular, ожидая вызова функции: Jasmine createSpy
У меня есть контроллер, который вызывает сервисную функцию, передавая 2 функции в качестве параметров (которые должны вызываться в зависимости от результата сервисной функции), например так:
Код контроллера:
onSuccess(data){ ... }
onError(data){ ... }
service.post(url, query, onSuccess, onError);
Сервисный код:
var service = function($log, $http, $location, $interval) {
...
var post = function(url, query, onSuccess, onError){
$http.post(url, query)
.success(function(data, status, headers, config){
onSuccess(data);
})
.error(function(data, status, headers, config){
onError(data);
});
};
...
});
Я пытаюсь проверить правильность запроса, переданного в функцию post, и вызвать функцию onSuccess, расположенную в коде контроллера. Я попытался проверить это так:
Тестовый код:
describe("post", inject(function (service) {
beforeEach(module('myApp'));
beforeEach(function() {
var url = "http://..."
var query = {
...
}
var mockSuccess = jasmine.createSpy('Success function');
var mockError = jasmine.createSpy('Error function');
service.post(url, query, mockSuccess, mockError);
}
it('Should call success function following call to http.post', function () {
expect(mockSuccess).toHaveBeenCalled();
});
))};
Хотя я получаю ошибку:
TypeError: null is not an object (evaluating 'currentSpec.$modules')
Так что я не уверен, как правильно проверить, успешно ли мой запрос возвращает данные через HTTP-запрос?
Заранее спасибо.