我正在尝试使用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然后它会显示未知提供者: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'
感谢您的任何建议。
答案 0 :(得分:1)
确保将angular-route
模块和所有依赖项添加到flies
的{{1}}数组中。这应该可以解决问题。
答案 1 :(得分:0)
我在
中也有以下代码beforeEach
:angular.mock.module('foo'); angular.mock.module('ngRoute'); angular.mock.module('ui.bootstrap');
我认为你不需要模仿ngRoute
和ui.bootstrap
通常我只是设置
describe('myApp', function() {
beforeEach(module('foo'));
it('should do something awesome', function() {
// arrange
// act
// assert
});
});