我正在尝试使用茉莉花测试我的控制器。基本上,当控制器被创建时,它会调用一个服务来发出 http 请求。我正在使用 httpBackend 来获取假数据。当我尝试运行测试时,我总是收到错误“没有待处理的刷新请求”。如果我删除 httpBackend.flush() 则测试失败,因为 controller.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");
});
})