我刚刚开始涉足 Angular 应用程序的单元和端到端测试。
我对应该在哪里声明 ngMock 和 ngMocke2e 模块感到困惑。我的bower.json
文件引用了 ngMock,并且该index.html
文件指向angular-mocks.js
脚本。
但是,当我在 my 的依赖项中声明 ngMock 时app.js
,应用程序将不会加载。此外,控制台中没有显示任何错误。
我需要使用这些模块进行测试,但将它们从app.js
.
我刚刚开始涉足 Angular 应用程序的单元和端到端测试。
我对应该在哪里声明 ngMock 和 ngMocke2e 模块感到困惑。我的bower.json
文件引用了 ngMock,并且该index.html
文件指向angular-mocks.js
脚本。
但是,当我在 my 的依赖项中声明 ngMock 时app.js
,应用程序将不会加载。此外,控制台中没有显示任何错误。
我需要使用这些模块进行测试,但将它们从app.js
.
您不需要将 angular-mocks 添加到 mainapp.js
您需要将 angular-mocks 注入到您的 karma conf 中,这是唯一需要它的地方。
例如:
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'
...
]
});
};
正如 Tony Barnes 的回答中所述,您可以在 karma 配置中注册 ngMock 源文件。
更深入地了解它是如何工作的;一旦第一次调用 ngMock 的注入函数,它会执行应用程序的引导程序并自动包含“ng”和“ngMock”模块以及为我们的单元测试注册的模块。
这就是为什么我们不需要编写代码angular.module('app', ['ngMock'])
来设置我们的测试,但它也感觉有点神奇,因为这个引导步骤已经为我们完成并不明显。
我编写了许多AngularJS 单元测试教程,例如ngMock Fundamentals for AngularJS -Understanding Inject,它们更深入地了解了 gnomic 的概念。