我正在尝试使用Angular设置单元测试,并注入了模块级配置和运行方法.
例如,如果我有这样的模块定义:
angular.module('foo',['ngRoute','angular-loading-bar','ui.bootstrap']).config(function ($routeProvider,$locationProvider,datepickerConfig,datepickerPopupConfig) {
Karma对我大喊大叫,因为我没有正确地使用以下方法嘲笑$routeProvider,datepickerConfig等:
Error: [$injector:modulerr] Failed to instantiate module foo due to: Error: [$injector:unpr] Unknown provider: $routeProvider
(然后,如果我删除$routeProvider,那么它会显示Unknown provider:datepickerConfig等)
我在beforeEach中也有以下代码:
angular.mock.module('foo'); angular.mock.module('ngRoute'); angular.mock.module('ui.bootstrap');
以及我的karma.conf.js中的以下内容:
'components/angular/angular.js','components/angular/angular-mocks.js','components/angular/angular-route.js','components/angular-ui/ui-bootstrap-tpls.js','app/*.js',// app code 'app/**/*.js','app/**/**/*.js','test/app/*.js',// app.js 'test/specs/*.js',// angular.mock.module calls 'test/**/*.js',// tests 'test/**/**/*.js'
谢谢你的任何建议.
解决方法
确保将angular-route模块和所有依赖项包含到karma.conf.js的苍蝇数组中.这应该够了吧.