ngRoute不是因果报应实例化的

ngRoute not instantiated by karma

本文关键字:实例化 因果报应 ngRoute      更新时间:2023-09-26

有人能帮我找到一种方法,在单元测试的main describe()中同时使用beforeEach(module()和beforeEah(inject())吗

当我包含两个时

beforeEach(module('ngRoute'));

beforeEach(inject(function () {}));

在我的测试文件的main describe()中,我得到了这个错误。但是,如果我删除beforeEach(inject(){})代码,那么ngRoute就会被因果报应正确加载。

我已经查看了许多与这个问题相关的其他帖子。例如:

  • 错误:尝试在angularjs中实现路由时没有模块:ngRoute
  • AngularJS 1.2$注射器:modulerr
  • AngularJS 1.2 ngRoute单元测试错误

正如上面每个问题所建议的那样,我已经确保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包含在我的生产和开发代码中,但不包含在测试代码中,因为我只将该文件添加到了生产和开发文件夹中。