web-dev-qa-db-fra.com

Jest: importation simulée d'un fichier JSON

Je teste actuellement l'un de mes composants React comme ceci:

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

Mon composant Scene importe un setting.json fichier. J'ai ce fichier sur mon instance locale, mais je ne le pousse pas sur mon instance CI. Ainsi, lorsqu'il essaie de l'importer, le fichier est introuvable.

Existe-t-il un moyen de se moquer de ce fichier dans mon test?

24
Antoine Grandchamp

Vous pouvez soit utiliser moduleNameMapper dans vos paramètres Jest pour pointer l'importation vers un fichier json simulé.

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

Ou vous pouvez utiliser jest.mock dans votre test pour simuler directement le fichier, notez que vous devez ajouter le { virtual: true } paramètre.

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

Pour ceux qui cherchent à se moquer de JSON sous la forme d'un Array, il suffit de renvoyer un tableau à partir du rappel.

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

Vous pouvez également renvoyer d'autres types JSON valides: Object, String, Number, Boolean ou Null.

0
spencer.sm