编辑:有人指出rewire
文档中显而易见的内容,很快得到了解答。请注意,我将模块包装在IIFE中,因为我试图让节点停止抱怨关于严格模式之外的块作用域声明。而不是使用IIFE(使用严格模式),更简单的方法是在节点命令上使用--use-strict
标志:
node --use-strict app.js
通过这种方式,您可以像往常一样在代码中使用ES6,并且仍然可以通过重新连接访问它们。万岁!
我正在尝试测试我的节点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