在节点中使用mocha测试angularjs模块

时间:2014-08-21 02:45:29

标签: javascript angularjs mocha

mymodule.js定义为:

angular.module('mymodule', []).factory('MyModule', function () { /* my code */ });

然后我有一个mocha测试脚本(test.js),如:

var chai = require('chai');
chai.use(require("chai-as-promised"));
var angular = require('angular');
require('mymodule.js');

当使用mocha运行test.js时,我收到一条错误,指出没有定义角度。

我试图使用angular.injector,如:

var angular = require('angular');
var injector = angular.injector(['mymodule']);
var mymodule = injector.get('MyModule');

然后我收到错误“无法实例化模块”,因为mymodule.js尚未加载。

是否有一种简单的方法可以使其正常工作?

1 个答案:

答案 0 :(得分:1)

尝试将test.js中的var angular = ...更改为global.angular = ...

<强>解释

由于mymodule.js与test.js的范围不同,因此在test.js中将angular声明为var将不会使其在mymodule.js中可访问。您必须将它附加到全局对象,以使其在任何地方都可用,而不需要它。

请参阅http://nodejs.org/api/globals.html#globals_global