我是Unit Testing的新手,正在尝试使用$ httpBackend来测试服务。
这是我的一些代码:
.factory('Configuration', function($http, $rootScope, $localStorage) {
return $http.get('some/url', {cache: true}).success(function(response) { return response; })
.then(function(response){
return (response.data.some.thing) || {};
});
})
config在这里,在模块.config():
中$routeProvider.when('/something/:id', {templateUrl: 'some/file.html', resolve: {config: 'Configuration' }, controller: 'AssessmentTheme as assessmentTheme'});
然后测试:
describe('testAuthor', function() {
var controller, element, $modalInstance, config;
beforeEach(module('testAuthor'));
beforeEach(inject(function($controller, $httpBackend){
$httpBackend.when('GET', 'some/url').respond([{},{},{}])
controller = $controller("AssessmentTheme", {config: config})
}))
....
beforeEach(inject(function($httpBackend){
$httpBackend.flush();
}))
it('shoud do something', function(){
expect(controller.config).toEqual([{},{},{}]);
})
})
以下是控制器对配置的作用:
.controller('AssessmentTheme', function (config) {
this.config = {}
angular.extend(this.config, config);
....
我试图将各种不同的东西放入响应中,但业力仍然失败,并带有以下信息:
Expected Object({ }) to equal [ Object({ }), Object({ }), Object({ }) ]
我无法弄清楚如何让测试实际使用来自$ httpBackend()的响应
有没有人看到我的问题并能引导我找到解决方案?
提前致谢。