我知道有很多这样的问题,但这些问题都没有对我有用,我也不知道发生了什么以及为什么他们不能处理我的具体案例
我试图使用$ httpBackend测试控制器。
不幸的是,我总是得到
意外请求:GET default-system.json
不再需要预期
控制器我试图使用我工厂的load()方法测试加载数据:
angular.module('services', ['ngResource']).factory('myData', [
'$http', '$stateParams', function($http, $stateParams) {
var myData;
myData= function(Data) {
if (Data) {
return this.setData(Data);
}
};
myData.prototype = {
setData: function(Data) {
return angular.extend(this, Data);
},
load: function() {
var scope;
scope = this;
return $http.get('default-system.json').success(function(Data) {
return scope.setData(Data.data);
}).error(function(err) {
return console.error(err);
});
},
filtered: function() {
var scope;
scope = this;
return $http.get('default-system.json').success(function(Data) {
return angular.forEach(Data.data, function(item) {
var urlZoneId;
urlZoneId = parseInt($stateParams.zoneID);
if (item.iID === urlZoneId) {
return scope.setData(item);
}
});
});
}
};
return myData;
}
])
这是我试图测试的控制器:
angular.module('menuController', ['services']).controller('menu', [
'$scope', 'myData', function($scope, myData) {
$scope.test= new myData();
$scope.test.load();
}
]);
这是单元测试:
describe('Controller: menu', function() {
var $controller, $rootScope, myData, httpBackend, mockedRequest;
mockedRequest = {
"error": 0,
"ts": 1456151050,
"tm": "2016-02-22T14:24:10+0000",
"data": [{....},{....}]
]};
beforeEach(module('App'));
beforeEach(inject(function(_$rootScope_, _$controller_) {
$rootScope = _$rootScope_;
return $controller = _$controller_('menu', {
$scope: $rootScope
});
}));
beforeEach(inject((function($httpBackend, _myData_) {
myData = _myData_.prototype;
return httpBackend = $httpBackend;
})));
afterEach(function() {
httpBackend.flush();
httpBackend.verifyNoOutstandingExpectation(false);
return httpBackend.verifyNoOutstandingRequest();
});
return it('Should check that the controller is injected correctly', function() {
httpBackend.expectGET('default-system.json').respond(mockedRequest);
return myData.load().then(function(result) {
return console.log(result);
});
});
});
但是我得到了上面提到的错误。有什么想法吗?
我真的卡住了,我无法弄清楚它为什么不起作用。
提前感谢您提供任何帮助