【发布时间】:2016-10-08 10:24:09
【问题描述】:
编辑:有人指出rewire 文档中明显的内容很快就回答了这个问题。 请注意,我将模块包装在 IIFE 中,因为我试图让节点停止抱怨阻塞严格模式之外的范围声明。而不是使用 IIFE(使用严格模式),更简单的方法是在节点命令上使用 --use-strict 标志:
node --use-strict app.js
这样你就可以在你的代码中正常使用 ES6 并且它们仍然可以通过 rewire 访问。万岁!
我正在尝试测试我的节点 ES6 应用程序。更具体地说,我正在尝试测试未从模块导出的模块中的函数。 目前,我什至无法在我的测试中定义该函数。我正在尝试使用 rewire 来测试它。
我不确定这是否可能是严格模式或使用 ES6 的问题,但我似乎无法在网上找到任何解决方案的提示:(
任何帮助将不胜感激!
这是我的模块:
//myModule.js
(function(){
'use strict';
let myFunction = () => {
return 'hello';
};
})();
这是我的测试:
//myModule.spec.js
(function(){
'use strict';
let rewire = require('rewire');
let myModule = rewire('./myModule.js');
describe('app', () => {
it('should do something', () => {
let func = myModule.__get__('myFunction');
expect(func).toBeDefined();
});
});
})();
这是我在目录上运行 jasmine-node 得到的输出:
Failures:
1) app should do something
Message:
ReferenceError: myFunction is not defined
Stacktrace:
ReferenceError: myFunction is not defined
【问题讨论】:
-
您没有导出
myFunction,这就是它未定义的原因。 rewire例子 -
我认为您可以使用 rewire 来测试未导出的功能:stackoverflow.com/questions/14874208/… ?
标签: node.js jasmine ecmascript-6