web-dev-qa-db-ja.com

Jest:JSONファイルの模擬インポート

私は現在、次のようなReactコンポーネントの1つをテストしています:

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

私のコンポーネントScenesetting.jsonファイル。ローカルインスタンスにそのファイルがありますが、CIインスタンスにプッシュしません。そのため、インポートしようとしても、ファイルは見つかりません。

私のテストでこのファイルをモックする方法はありますか?

24

Jest設定で moduleNameMapper を使用して、インポートがモックされたjsonファイルを指すようにすることができます。

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

または、テスト内で jest.mock を使用してファイルを直接モックできます。{ virtual: true }パラメーターを追加する必要があることに注意してください。

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

JSONをArrayの形式でモックする場合は、コールバックから配列を返すだけです。

jest.mock('./data.json', () => ([1, 2, 3]));

他の有効なJSONタイプを返すこともできます:ObjectStringNumberBoolean、またはNull

0
spencer.sm