Я новичок в модульном тестировании, и я использую жасмин и карму в рамках 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();
});
});
Заранее большое спасибо!