我一直在尝试测试我的 Controller :
应用程序.js
angular
.module('MyModule', [
'ui.router'
]);
angular
.module('MyModule')
.config(configFn);
configFn.$inject = ['$stateProvider'];
function configFn($stateProvider){
$stateProvider
.state('myState',{
url:'state',
views: {
'main' : {
templateUrl: 'src/views/view.html',
controller: 'MyCtrl',
controllerAs: 'ctrl',
resolve: {
DataResolve: ['MyService', function(MyService){
return MyService.getData();
}]
}
}
}
});
Controller .js
angular
.module('MyModule')
.controller('MyCtrl', Controller);
Controller.$inject = ['DataResolve'];
/* @ngInject */
function Controller(DataResolve) {
var vm = this;
vm.data = DataResolve;
}
我的规范
controller_spec.js
describe('Controller', function(){
beforeEach(module('MyModule'));
beforeEach(inject(function($controller){
this.myCtrl = $controller('MyCtrl');
}));
it('Controller should be defined', function() {
expect(this.myCtrl).toBeDefined();
});
});
但是当测试运行时,出现以下错误:
错误:[$injector:unpr] 未知提供者:DataResolveProvider <- DataResolve <- MyCtrl
我做错了什么?
最佳答案
在您的 beforeEach
中,添加对您的服务的引用:
beforeEach(inject(function($controller, DataResolve){
this.DataResolve = DataResolve;
this.myCtrl = $controller('ParcelasController', {
DataResolve: this.DataResolve;
});
}));
关于angularjs - 当我在 Controller 中注入(inject) ui-router resolve 时,Karma 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35944242/