导入或要求两次javascript文件进行mocha测试

Thi*_*its 0 javascript mocha.js node.js

我正在编写一个规范,根据global.window的存在来测试javascript文件中的差异.有没有办法导入或需要两次特定文件?设置global.window之前和之后一次.

正在测试的文件看起来像这样:

let someObject = (windowExists => {
  return windowExists ? 'abc' : '123';
})(typeof window !== 'undefined');

export default someObject;
Run Code Online (Sandbox Code Playgroud)

我希望使用这种模式,但看起来似乎并不可行,因为common.js和es6模块都只包含一次文件并且之后处理缓存版本.

Che*_*hev 8

这比大多数人意识到的要容易.所有需要的模块都存储在require.cache.您只需从缓存中删除该模块,然后要求它不再从缓存中拉出模块.缓存模块的关键是模块的完整路径,require.resolve如果您不想键入完整路径,可以使用该路径.

require('./myModule.js');
delete require.cache[require.resolve('./myModule.js')];
require('./myModule.js');
Run Code Online (Sandbox Code Playgroud)

不清除缓存:

清除缓存: