ngRoute 没有被 karma 实例化
ngRoute not instantiated by karma
谁能帮我找到一种在我的单元测试的主要 describe() 中同时使用 beforeEach(module()) 和 beforeEach(inject()) 的方法?
当我同时包含两者时
beforeEach(module('ngRoute'));
和
beforeEach(inject(function () {}));
在我的测试文件的主要 describe() 中,我得到了这个 error。但是,如果我删除了 beforeEach(inject () {})) 代码,那么 ngRoute 就会被 karma 正确加载。
我检查了很多与此问题相关的其他帖子。如:
- Error: No module: ngRoute when trying to implement routing in angularjs
- AngularJS 1.2 $injector:modulerr
- AngularJS 1.2 ngRoute unit test error
根据上述每个问题的建议,我已确保 angular-routes.js 包含在我的 index.html 中,并且我还确保 'ngRoute' 是我的应用程序的依赖项。
测试文件:
define(['ngMock', 'controllers/home/main-home-ctrl'], function () {
'use strict';
describe.only('Controller: MainHomeController', function () {
beforeEach(module('ngRoute'));
beforeEach(inject(function () {}));
afterEach(function() {
});
describe('', function () {
it('should ', function () {
});
});
});
});
karma.config.js :
files: [
{pattern : 'www/js/bootstrap.js', included : false },
{pattern : 'www/js/lib/*.js', included : false },
{pattern : 'www/js/controllers/*.js', included : false },
{pattern : 'www/js/controllers/**/*.js', included : false },
{pattern : 'www/js/directives/*.js', included : false },
{pattern : 'www/js/directives/**/*.js', included : false },
{pattern : 'www/js/factories/*.js', included : false },
{pattern : 'www/js/factories/**/*.js', included : false },
{pattern : 'www/js/filters/*.js', included : false },
{pattern : 'www/js/filters/**/*.js', included : false },
{pattern : 'www/js/services/*.js', included : false },
{pattern : 'www/js/services/**/*.js', included : false },
{pattern : 'www-test/lib/*.js', included : false },
{pattern : 'www-test/spec/**/*.js', included : false },
{pattern : 'www-test/spec/**/**/*.js', included : false },
'www-test/main-test.js',
'www/js/lib/angular-route.js'
],
angular-routes.js 位于 'www/js/lib/angular-routes.js',因此当 karma 运行我的单元测试时应该包括在内。
app.js :
define([
'angular',
'angular-route',
'controllers/index',
'directives/index',
'factories/index',
'filters/index',
'services/index'
], function (ng) {
'use strict';
return ng.module('app', ['ngRoute', 'app.controllers', 'app.directives', 'app.factories', 'app.filters', 'app.services']);
});
所以,我发现了我的菜鸟错误。 Angular-route 包含在我的生产和开发代码中,但没有包含在我的测试代码中,因为我只将该文件添加到我的生产和开发文件夹中。
谁能帮我找到一种在我的单元测试的主要 describe() 中同时使用 beforeEach(module()) 和 beforeEach(inject()) 的方法?
当我同时包含两者时
beforeEach(module('ngRoute'));
和
beforeEach(inject(function () {}));
在我的测试文件的主要 describe() 中,我得到了这个 error。但是,如果我删除了 beforeEach(inject () {})) 代码,那么 ngRoute 就会被 karma 正确加载。
我检查了很多与此问题相关的其他帖子。如:
- Error: No module: ngRoute when trying to implement routing in angularjs
- AngularJS 1.2 $injector:modulerr
- AngularJS 1.2 ngRoute unit test error
根据上述每个问题的建议,我已确保 angular-routes.js 包含在我的 index.html 中,并且我还确保 'ngRoute' 是我的应用程序的依赖项。
测试文件:
define(['ngMock', 'controllers/home/main-home-ctrl'], function () {
'use strict';
describe.only('Controller: MainHomeController', function () {
beforeEach(module('ngRoute'));
beforeEach(inject(function () {}));
afterEach(function() {
});
describe('', function () {
it('should ', function () {
});
});
});
});
karma.config.js :
files: [
{pattern : 'www/js/bootstrap.js', included : false },
{pattern : 'www/js/lib/*.js', included : false },
{pattern : 'www/js/controllers/*.js', included : false },
{pattern : 'www/js/controllers/**/*.js', included : false },
{pattern : 'www/js/directives/*.js', included : false },
{pattern : 'www/js/directives/**/*.js', included : false },
{pattern : 'www/js/factories/*.js', included : false },
{pattern : 'www/js/factories/**/*.js', included : false },
{pattern : 'www/js/filters/*.js', included : false },
{pattern : 'www/js/filters/**/*.js', included : false },
{pattern : 'www/js/services/*.js', included : false },
{pattern : 'www/js/services/**/*.js', included : false },
{pattern : 'www-test/lib/*.js', included : false },
{pattern : 'www-test/spec/**/*.js', included : false },
{pattern : 'www-test/spec/**/**/*.js', included : false },
'www-test/main-test.js',
'www/js/lib/angular-route.js'
],
angular-routes.js 位于 'www/js/lib/angular-routes.js',因此当 karma 运行我的单元测试时应该包括在内。
app.js :
define([
'angular',
'angular-route',
'controllers/index',
'directives/index',
'factories/index',
'filters/index',
'services/index'
], function (ng) {
'use strict';
return ng.module('app', ['ngRoute', 'app.controllers', 'app.directives', 'app.factories', 'app.filters', 'app.services']);
});
所以,我发现了我的菜鸟错误。 Angular-route 包含在我的生产和开发代码中,但没有包含在我的测试代码中,因为我只将该文件添加到我的生产和开发文件夹中。