我正在尝试为我的一个旧应用程序编写一些单元测试。 那时我没想到我会想在主文件之外使用函数,所以我在其中使用了很多局部变量。我的问题是,在导入它们之后,他们试图使用来自其他范围的变量。有没有办法让他们在不更改旧文件的情况下使用新范围?
\\foo.js
let arr
exports.foo = function foo() {
return arr[0]
}
\\foo.test.js
let arr = ['bar']
let foo = require('../test/supreme.spec.js').foo
console.log(foo())//undefined, want 'bar'
我明白这可能是一个非常糟糕的做法,但那是一个旧代码,我现在不想乱用它。
最佳答案
你可以使用 rewire .它专为此类情况而设计:
let rewire = require('rewire')
let fooModule = rewire('../lib/foo.js')
fooModule.__set__('arr', [ 'bar' ])
console.log(fooModule.foo()) // bar
关于javascript - 使导入的函数使用新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48736663/