Karma.config.js angularjs问题

时间:2016-10-17 14:42:05

标签: angularjs unit-testing karma-jasmine

我正试图在我的angular 1.x应用程序中设置业力单元测试。我已经关注了100万个教程,仍然无法做到正确。这是我在karma.config.js中的文件数组:

[

    'bower_components/angular/angular.js',
    'bower_components/angular-mocks/angular-mocks.js',
    'bower_components/angular-resource/angular-resource.js',
    'bower_components/angular-animate/angular-animate.js',
    'bower_components/angular-aria/angular-aria.js',
    'bower_components/angular-material/angular-material.js',
    'bower_components/angular-messages/angular-messages.js',
    'bower_components/angular-route/angular-route.js',
    'bower_components/angular-environment/src/angular-environment.js',
    'site-inStore/app/**/*.js',
    'site-inStore/app.js',
    'site-inStore/app.config.js',
    'site-inStore/app.factory.js',
    'site-inStore/app.networker.js',
    'site-inStore/assets/css/*.cs',
    './test/*.js'
],

我的模块声明如下:

var sisApp = angular.module('sisApp', ['ngRoute','ngMaterial', 'ngAnimate', 'ngMessages', 'environment']);

我运行karma start时遇到的错误是:

Uncaught Error: [$injector:nomod] Module 'sisApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

如果有任何其他我缺少的细节有助于诊断问题,请告诉我,我会添加所需的任何内容。

2 个答案:

答案 0 :(得分:1)

很难预料到实际问题,但我有一些提示:

对于您的bower依赖项,我建议使用wiredep来维护您的bower依赖项列表。 对于您自己的JS文件,我建议使用karma-angular-filesort插件。

另外,请确保在beforeEach(module(<your-module>))的测试套件之前运行<your-module>

答案 1 :(得分:0)

根据评论,似乎问题是调用

'site-inStore/app/**/*.js'

正在尝试运行查找模块的代码。由于您的模块实际上没有被声明直到下一行,因此您看到的错误是预期的。更令人困惑的是,根据文件的命名,这个设置可能一次有效,假设模块声明恰好在其他任何东西之前运行。

要解决此问题,请确保您的模块文件在所有依赖项之后立即生效。