使用嵌套文件开玩笑嘲笑node_modules

Ale*_*tis 5 unit-testing mocking jestjs

我正在尝试模拟嵌套在子目录中的第 3 方库(在 node_modules 中)。我已经在 中创建了模拟__mocks__/@exponent/ex-navigation。它位于我的 node_modules 目录旁边的顶层。

我通过在我的测试文件中设置模拟jest.mock('@exponent/ex-navigation');

由于某种原因,我无法让它使用模拟文件。我认为这与子目录有关@exponent。如果我把它改成简单的东西,就像fs它一样有效。

Ale*_*lex 8

看来 jest 不支持模拟作用域包(更多信息请参见此处)。所以你有两个选择。

1. 定义你的模拟内联

jest.mock('@exponent/ex-navigation', () => {
  return {
    // mocked exports
  };
});
Run Code Online (Sandbox Code Playgroud)

2. 在 jest 配置中手动映射模拟位置

{
  ...
  "moduleNameMapper": [
    "@exponent/ex-navigation": "<rootDir>/__mocks__/@exponent/ex-navigation"
    ...
  ]
}
Run Code Online (Sandbox Code Playgroud)