Протестируйте сервис Angular, ожидая вызова функции: Jasmine createSpy - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть контроллер, который вызывает сервисную функцию, передавая 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-запрос?

Заранее спасибо.

...