【发布时间】:2015-09-16 17:10:15
【问题描述】:
我需要控制器测试方面的帮助。我有一个使用 ui-router 的resolve。在我的测试中,我需要弄清楚如何处理resolve 的exampleData。
config.js
angular.module('myModule')
.config(['$stateProvider', '$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('site', {
abstract: true,
resolve: {
exampleData: function(ExampleService) {
// ExampleService.get() makes an $http call
return ExampleService.get();
}
},
// etc
})
.state('example', {
parent: 'site',
url:'/example',
controller: 'ExampleCtrl as example',
templateProvider: function($templateCache) {
return $templateCache.get('views/example.html');
}
});
}]);
example-controller.js
angular.module('myModule')
.controller('ExampleCtrl', ['exampleData',
function(exampleData) {
var self = this;
self.exampleData = exampleData;
// self.exampleData should output something like
// [
// {id: 1, title:'something'},
// {id: 2, title:'something'},
// {id: 3, title:'something'}
// ]
}]);
example-controller.test.js
describe('Controller: ExampleCtrl', function() {
beforeEach(module('myModule'));
var ctrl;
beforeEach(inject(function($controller) {
ctrl = $controller('ExampleCtrl');
}));
describe('initialization', function() {
beforeEach(function() {});
it('should exist', function() {
expect(!!ctrl).toBe(true);
});
it('should ...', function() {
// do something
});
});
当我运行测试时,我收到以下错误:
Unknown provider: exampleDataProvider <- exampleData <- ExampleCtrl
我的问题是:我该怎么做才能测试我的ExampleCtrl 中的resolve? ExampleService.get() 是一个服务,它进行 $http 调用并返回对象数组。
【问题讨论】:
-
我的解决方案有效吗???
标签: javascript angularjs unit-testing karma-jasmine angular-ui-router