Karma

时间:2016-01-04 19:59:02

标签: javascript angularjs unit-testing jasmine karma-jasmine

我对angularjs很新,我正在尝试使用Jasmine和Karma来测试应用程序。如果我只使用Jasmine提供的基本框架(使用SpecRunner.html),测试工作正常,但是当我尝试使用Karma时,我会继续获得相同的“模块未定义”消息。

我在karma.conf.js中的文件依赖关系如下:

files: [
  '../../js/angular.min.js',
  '../../js/angular-sanitize.min.js',
  'lib/angular-mocks.js',
  '../../js/app.js',
  'lib/jasmine-2.4.1/jasmine.js',
  'lib/jasmine-2.4.1/jasmine-html.js',
  'lib/jasmine-2.4.1/boot.js',
  'lib/jquery-1.11.3.min.js',
  'spec/spec.js'
]

到目前为止,这看起来与我在SO上看到的所有先前的业力未定义模块问题完全一样,除了我很确定包含angular-mocks.js,文件位置是正确的,我没有使用任何其他框架可能会覆盖karma.conf.js。我为再次提出同样的问题道歉,但我错过了一些非常明显的东西吗?

1 个答案:

答案 0 :(得分:1)

我过去和Karma有过类似的问题。你对依赖关系的顺序很挑剔。例如,如果你使用的是JQuery和Angular,那么Karma会在Angular之前想要JQuery。我看到你在它的所有子模块之前放置了Angular,这很棒。

我会按照以下顺序放置依赖项:

files: [
  'lib/jquery-1.11.3.min.js',
  '../../js/angular.min.js',
  '../../js/angular-sanitize.min.js',
  'lib/angular-mocks.js',
  'lib/jasmine-2.4.1/jasmine.js',
  'lib/jasmine-2.4.1/jasmine-html.js',
  'lib/jasmine-2.4.1/boot.js',
  '../../js/app.js',
  'spec/spec.js'
]

我在同一个应用程序中使用Minular模块的缩小版和非透明版时也遇到了问题。例如,如果要使用Angular的缩小版本,请确保其所有子模块都缩小。对于任何JavaScript依赖,我都会这么说。保持一致。