gpt4 book ai didi

node.js - 使用 rewire 测试 Node ES6 模块 - 函数未定义

转载 作者:搜寻专家 更新时间:2023-10-31 23:41:22 29 4
gpt4 key购买 nike

编辑:有人指出 rewire 文档中明显的内容,很快就回答了这个问题。 请注意,我将我的模块包装在 IIFE 中,因为我试图获取 Node 停止提示严格模式之外的 block 范围声明。不使用 IIFE(使用严格模式),更简单的方法是在 Node 命令上使用 --use-strict 标志:

node --use-strict app.js

这样你就可以像往常一样在你的代码中使用 ES6,并且它们仍然可以通过重新连接访问。万岁!


我正在尝试测试我的 Node 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

最佳答案

那些IIFE's你包装你的代码导致了问题。它甚至在 the fine manual 中提到过:

Variables inside functions can not be changed by rewire

关于node.js - 使用 rewire 测试 Node ES6 模块 - 函数未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37697616/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com