我正试图在我的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.
如果有任何其他我缺少的细节有助于诊断问题,请告诉我,我会添加所需的任何内容。
答案 0 :(得分:1)
很难预料到实际问题,但我有一些提示:
对于您的bower依赖项,我建议使用wiredep来维护您的bower依赖项列表。 对于您自己的JS文件,我建议使用karma-angular-filesort插件。
另外,请确保在beforeEach(module(<your-module>))
的测试套件之前运行<your-module>
。
答案 1 :(得分:0)
根据评论,似乎问题是调用
'site-inStore/app/**/*.js'
正在尝试运行查找模块的代码。由于您的模块实际上没有被声明直到下一行,因此您看到的错误是预期的。更令人困惑的是,根据文件的命名,这个设置可能一次有效,假设模块声明恰好在其他任何东西之前运行。
要解决此问题,请确保您的模块文件在所有依赖项之后立即生效。