Я пытаюсь проверить свой контроллер с помощью jasmine. По сути, когда контроллер создается, он вызывает службу для выполнения http-запроса. Я использую httpBackend для получения поддельных данных. Когда я пытаюсь запустить тест, я всегда получаю сообщение об ошибке «Нет ожидающих запросов на сброс». Если я удалю httpBackend.flush(), то тест завершится неудачно, потому что имя контроллера.data.name не определено. Может кто знает почему так происходит? Спасибо.
Код модуля находится здесь:
var myModule = angular.module('myModule', ['ngMockE2E']);
myModule.run(function($httpBackend){
$httpBackend.whenGET('/Person?content=Manager').respond(function (){
var response = {'name':'Bob','age':'43'}
return [200,response];
})
});
Код для услуги:
myModule.factory('myService',function($http){
return {
getData: function(position){
return $http.get('/Person?content='+position);
}
}
});
Код для контроллера:
myModule.controller('myController',function(xrefService){
var _this = this;
_this.data ={};
_this.getData = function(position){
myService.getData(position).then(function(response){
_this.data = response.data
});
}
_this.getData("Manager");
})
Код для проверки контроллера:
describe("Test Controller",function(){
var controller,httpBackend,createController;
beforeEach(module('myModule'));
beforeEach(inject(function($controller,$httpBackend){
createController = function(){
return $controller('myController');
}
httpBackend = $httpBackend;
}));
it("should return data",function(){
controller = createController();
httpBackend.flush();
expect(controller.data.name).toEqual("Bob");
});
})