AngularJS: метод тестирования с вызовом $ http рейз ОШИБКА - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть такой контроллер в AngularJS:

  (angular => {
    'use strict';

    const component = {
        bindings: {
            fileLoaded: '&'
        },
        templateUrl:
            '/some-component/some-component.template.html',
        controller
    };

    function controller(SomeService) {
        const ctrl = this;

        ctrl.data = null;
        ctrl.isLoading = false;

        ctrl.saveIt = (data) => {
            ctrl.isUpdating = true;

            SomeService.setData(data).then(
                () => {
                    ctrl.isLoading = false;
                    ctrl.data = data;
                },
                () => {
                    ctrl.isLoading = false;
                });
        };
    }

    controller.$inject = [ 'SomeService' ];

    angular.module('myApp').component('someComponent', component);
})(window.angular);

, и я пытаюсь написать такой тест:

'use strict';

describe('someComponent Component', () => {
    let $componentController;
    let $rootScope = null;
    let $scope = null;
    let $httpBackend = null;
    let SomeService = null;

    beforeEach(module('myApp'));
    beforeEach(inject(function(_$componentController_, _$rootScope_, _$httpBackend_, _SomeService_) {
        $componentController = _$componentController_;
        $rootScope = _$rootScope_;
        $httpBackend = _$httpBackend_;
        SomeService = _SomeService_;

        $scope = $rootScope.$new();
    }));

    describe('method: saveIt', () => {
        it('call saveIt (POST)', () => {
            const ctrl = $componentController('someComponent', null, {});

            const data = { someData: 'someDataSomeData' };

            ctrl.saveIt(data);

            $httpBackend
                .expectPOST('/someURL')
                .respond(200, {});

            SomeService.setData(data)
                .then(() => {
                    ctrl.isLoading = false;
                    ctrl.data = data;
                })
                .catch(() => {
                    ctrl.isLoading = false;
                });

            $httpBackend.flush();

            expect(ctrl.data).not.toBe(null);
            expect(ctrl.isLoading).toBe(false);
        });
    });
});

, но он просто вызывает ошибку без какого-либо объяснения: что и гдене так

как его отладить и решить?что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...