我正在尝试模拟嵌套在子目录中的第三方库(在node_modules中)。
我在__mocks__/@exponent/ex-navigation
中创建了模拟。它位于我的node_modules目录旁边的顶层。
我通过jest.mock('@exponent/ex-navigation');
在我的测试文件中设置了模拟。
出于某种原因,我无法使用模拟文件。我认为它与@exponent
子目录有关。如果我将其更改为fs
之类的简单内容,则可以正常使用。
答案 0 :(得分:4)
似乎jest不支持mocking scoped包(更多信息here)。所以你有两个选择。
<强> 1。定义您的模拟内联
jest.mock('@exponent/ex-navigation', () => {
return {
// mocked exports
};
});
<强> 2。在您的jest配置中手动映射模拟位置
{
...
"moduleNameMapper": [
"@exponent/ex-navigation": "<rootDir>/__mocks__/@exponent/ex-navigation"
...
]
}
答案 1 :(得分:0)
在Alex的回答的帮助下,我成功了:
jest.setMock('@exponent/ex-navigation', require('__mocks__/db'));
module.exports
module.exports = myMockedObject;
以这种方式设置模拟具有以下好处: