Jest:模拟导入JSON文件

时间:2017-03-23 20:35:38

标签: unit-testing react-native jestjs

我目前正在测试我的一个React组件:

it('renders correctly', () => {
  const tree = renderer.create(<Scene {...props} />).toJSON();
  expect(tree).toMatchSnapshot();
});

我的组件Scene导入setting.json文件。我在我的本地实例上有该文件,但我没有在我的CI实例上推送它。因此,当它尝试导入它时,找不到该文件。

有没有办法在我的测试中模拟这个文件?

2 个答案:

答案 0 :(得分:27)

您可以在jest设置中使用moduleNameMapper将导入指向模拟的json文件。

{
  "moduleNameMapper": {
    "setting.json": "<rootDir>/__mocks__/setting.json"
  }
}

或者您可以在测试中使用jest.mock直接模拟文件,请注意您必须添加{ virtual: true }参数。

jest.mock('path/to/setting.json', ()=>({
  settings: 'someSetting'
}), { virtual: true })

答案 1 :(得分:1)

对于那些希望以ResponseErrorHandler形式模拟JSON的人,只需从回调中返回一个数组即可。

RestTemplate

您还可以返回其他有效的JSON类型:ResponseErrorHandler#handlerError()Arrayjest.mock('./data.json', () => ([1, 2, 3])); ObjectString