Unit testing Jest模拟节点\具有嵌套文件的模块
我试图模拟嵌套在子目录中的第三方库(在节点_模块中)。 我已经在Unit testing Jest模拟节点\具有嵌套文件的模块,unit-testing,mocking,jestjs,Unit Testing,Mocking,Jestjs,我试图模拟嵌套在子目录中的第三方库(在节点_模块中)。 我已经在\uuuuu mocks\uuuu/@exponent/ex navigation中创建了模拟。它位于我的node_modules dir旁边的顶层 我通过jest.mock('@exponent/ex-navigation')在测试文件中设置mock 由于某种原因,我无法让它使用模拟文件。我认为这与@exponent子目录有关。如果我将其更改为类似于fs的简单方式,它就会工作。jest似乎不支持模拟作用域包(更多信息)。所以你有两
\uuuuu mocks\uuuu/@exponent/ex navigation
中创建了模拟。它位于我的node_modules dir旁边的顶层
我通过jest.mock('@exponent/ex-navigation')在测试文件中设置mock代码>
由于某种原因,我无法让它使用模拟文件。我认为这与@exponent
子目录有关。如果我将其更改为类似于fs
的简单方式,它就会工作。jest似乎不支持模拟作用域包(更多信息)。所以你有两个选择
1。定义您的模拟内联
jest.mock('@exponent/ex-navigation', () => {
return {
// mocked exports
};
});
2。在jest配置中手动映射模拟位置
{
...
"moduleNameMapper": [
"@exponent/ex-navigation": "<rootDir>/__mocks__/@exponent/ex-navigation"
...
]
}
{
...
“moduleNameMapper”:[
“@exponent/ex-navigation”:“/\uuuuuu mocks\uuuuuu/@exponent/ex-navigation”
...
]
}
在亚历克斯的回答的帮助下,我成功了:
在我的测试套件顶部设置模拟
jest.setMock('@exponent/ex-navigation',require(''uuuumocks'uuuuu/db')代码>
让模拟文件通过模块导出其模拟对象。导出
module.exports=myMockedObject代码>
以这种方式设置模拟具有以下好处:
- 不必更改笑话设置李>
- 启用“Orta.vscode jest”扩展,以便仍然能够在VisualStudio代码编辑器中正确运行测试
我看到了完全相同的问题,你解决过这个问题吗?奇怪的是,Jest目前不支持这个问题。在此显示您对该功能请求的支持:出于某种原因,我不得不将模拟的导出分配给步骤1的模块。导出。=>不必使用jest.mock()