无法获取模拟元数据(babel 7升级)

时间:2019-04-20 16:33:14

标签: javascript reactjs jestjs babeljs

我正在模拟git子模块(本质上只是我们在工作中使用的javascript库),我所有的模拟都开始返回:

Failed to get mock metadata

这发生在我们将git子模块项目升级到babel 7(从6)之后。如果进入子模块并将更改还原回babel 6,测试将返回通过状态。

我像这样模拟模块:

// path is an alias defined in webpack config
import { MyModule } from 'my-module';

jest.mock('my-module');

MyModule.someAttr.mockResolvedValue({data});

关于升级到babel 7的任何想法都引入了这些错误,其他所有内容(包括子模块)都可以正常工作,只是使用子模块的UI上的测试未通过

1 个答案:

答案 0 :(得分:0)

该错误与Jest解决manual mocks的方式有关。可能是Webpack使用别名解析器解析了import语句,但是jest.mock()函数并未考虑该别名解析器。相对于

__mocks__/文件夹中的手动模拟已解决

因为您的模拟模块是git子模块的一部分。您可以将子模块目录设置为放在__mocks__/文件夹中项目的根目录中,也可以将子模块依赖项的导出模块放在__mocks__/文件夹中。

.
├── config
├── __mocks__
│   └── mock-module.js
├── submodule
│   ├── __mocks__
│   │   └── mock-submodule.js
│   └── index.js
├── node_modules
└── src