在哪里声明ngMock模块

时间:2015-04-23 16:13:50

标签: angularjs jasmine protractor ngmock

我刚刚开始涉及角度应用的单元和端到端测试。

我对应该在哪里声明ngMock和ngMocke2e模块感到困惑。我的bower.json文件引用了ngMock,index.html文件指向angular-mocks.js脚本。

但是,当我在app.js的依赖项中声明ngMock时,应用程序不会加载。此外,控制台中没有显示错误。

我需要使用这些模块进行测试,但从app.js将它们注入应用程序似乎是违反直觉的。

2 个答案:

答案 0 :(得分:2)

你不需要在你的主app.js添加角度模拟你需要将角度模拟注入你的业力中,这是唯一需要它的地方。

例如:

module.exports = function(config) {
  'use strict';

  config.set({

    files: [
      'bower_components/angular/angular.js',
      'bower_components/angular-resource/angular-resource.js',
      ...
      'bower_components/angular-mocks/angular-mocks.js'
      ...

    ]

  });
};

答案 1 :(得分:2)

如Tony Barnes的回答所述,您可以在karma配置中注册ngMock源文件。

更深入地了解其工作原理;首次调用ngMock的inject功能后,它会执行应用的bootstrap并自动包含' ng'和' ngMock'模块以及为我们的单元测试注册的模块。

这就是为什么我们不需要按照angular.module('app', ['ngMock'])的方式编写代码来设置我们的测试,但它也感觉不太神奇,因为这个引导步骤并不明显是为我们完成的。

我已经写了一些AngularJS Unit Testing Tutorials,例如ngMock Fundamentals for AngularJS - Understanding Inject,它们更深入地探讨了gnomic的概念。