Javascript 带Jest的模拟模块变量
我一直在使用Jest模拟一些变量,这些变量在测试函数中使用,如下所示:Javascript 带Jest的模拟模块变量,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,我一直在使用Jest模拟一些变量,这些变量在测试函数中使用,如下所示: global.SERVER_URL = 'test'; await hydrateApp(); expect(ReactDOM.hydrate).toBeCalled(); 这里,新设置的SERVER\u URL值由hydreapp()使用。但是,我无法使用模块执行此操作。当我尝试设置module.hot时,调用函数时,它仍将是未定义的: global.module.hot = { accept: jest.fn()
global.SERVER_URL = 'test';
await hydrateApp();
expect(ReactDOM.hydrate).toBeCalled();
这里,新设置的SERVER\u URL
值由hydreapp()
使用。但是,我无法使用模块
执行此操作。当我尝试设置module.hot
时,调用函数时,它仍将是未定义的:
global.module.hot = {
accept: jest.fn()
};
await hydrateApp();
expect(global.module.hot.accept).toBeCalled();
在这种情况下,module.hot
在hydreapp()中未定义
如何在模块对象上设置被测试函数使用的变量?您是否可以显示eapp
的代码,或者至少如何使用module.hot
?设置global.module.hot
时是否抛出任何错误?另一个要考虑的事情——检查您使用的环境,有可能使用浏览器类环境(而不是<代码>全局< /代码>,您有<代码> Windows >代码>。<代码> Global。模块。热< /COD>变量被正确设置并存在于<代码> HyDATAppApple()/<代码>中,但我需要<代码>模块。因为webpack将其用于热模块更换。对于每个其他变量,我可以设置global.var
,然后还将设置var
。这里我不能这样做。global
肯定存在,因为我将其用于其他变量,并且在设置global.module.hot
时,它不会显示任何错误。您的setter很可能会无声地失败,因为module
未定义,并且您尝试在未定义的module
上设置hot
属性。您是否尝试过类似这样的操作:global.module={hot:{accept:jest.fn()}代码>?注意objectNope的另一个级别,模块。热
仍未定义:(