Блок тестирования контроллера с жасмином - PullRequest
0 голосов
/ 27 февраля 2019

Я новичок в модульном тестировании, и я использую жасмин и карму в рамках angularjs.Я пытаюсь написать модульный тест для одного из моих контроллеров, который имеет такую ​​функцию:

function init(){
            vm.itemList = {};
            ajax.get(address.base(['users'])).then(
                function (response) {
                    vm.itemList = response.data.data;
                    uiGridAssistant.generateColumns(columns, vm, vm.itemList, {contextmenuOptions: 'ctrl.rightClick'}).then(
                        function (response) {
                            vm.gridOptions = response;
                        },
                        function () { }
                    )
                },
                function () {
                    vm.noData = true;
                }
            );
            getBaseInfo();
        }

Я хочу протестировать функцию инициализации, которая использует службу uiGridAssistant внутри вызова ajax к серверу, но я не смог найти никакого решения.Это мир моего теста. Spec:

describe('users Controller', function() {
    var scope, controller, deferred, $httpBackend;
    
    beforeEach(angular.mock.module('ui.router'));
    beforeEach(angular.mock.module('app'));
    beforeEach(inject(function($injector, $controller, _$q_, _uiGridAssistant_) {
        var $rootScope = $injector.get('$rootScope');
        deferred = _$q_.defer();
        scope = $rootScope.$new();
        spyOn(_uiGridAssistant_, 'generateColumns').and.returnValue(deferred.promise);

        $httpBackend = $injector.get('$httpBackend');
        controller = $controller('users', {'$scope': scope, uiGridAssistant: _uiGridAssistant_});
    }));
        it('should returns grid options as expected', function () {
      controller.functions.init();
        $httpBackend.expectGET('http://users').respond(200);
        deferred.resolve(testGridOptionsColumns);
        scope.$apply();
        expect(controller.gridOptions).toBeDefined();
    });
  });

Заранее большое спасибо!

...