web-dev-qa-db-fra.com

test d'instantané jest: comment ignorer une partie du fichier d'instantané dans les résultats du test jest

Problème: ignorer une partie des résultats du test du fichier .snap

la question ici: il y a des composants dans mon test qui ont des valeurs aléatoires et je ne me soucie pas vraiment de les tester. est-il possible d'ignorer une partie de mon fichier X.snap? donc quand je lance des tests à l'avenir, cela ne me donnera pas de résultats d'échec de test.

17
sawa we

En fait, vous devez vous moquer des pièces mobiles.

Comme indiqué dans jest docs :

Vos tests doivent être déterministes. C'est-à-dire que l'exécution des mêmes tests plusieurs fois sur un composant qui n'a pas changé devrait produire les mêmes résultats à chaque fois. Vous êtes responsable de vous assurer que vos instantanés générés n'incluent pas de données spécifiques à la plate-forme ou d'autres données non déterministes.

Si c'est quelque chose lié au temps, vous pouvez utiliser

Date.now = jest.fn(() => 1482363367071);
12
Abdellah Alaoui

Maintenant, vous pouvez également utiliser propriété matcher pour ces cas.

Par exemple pour pouvoir utiliser l'instantané avec ces objets:

const obj = {
  id: dynamic(),
  foo: 'bar',
  other: 'value',
  val: 1,
};

Vous pouvez utiliser :

expect(obj).toMatchSnapshot({
  id: expect.any(String),
});

Jest vérifiera simplement que id est une chaîne et traitera les autres champs de l'instantané comme d'habitude.

8
Julien TASSIN