IIFE编辑:有人很快回答了这个问题,有人指出,在rewire documentation.注释中,我将模块封装在IIFEs中,因为我试图让节点停止抱怨在严格模式之外的块作用域声明。与使用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获得的输出:
Failures:
1) app should do something
Message:
ReferenceError: myFunction is not defined
Stacktrace:
ReferenceError: myFunction is not definedhttps://stackoverflow.com/questions/37697616
复制相似问题