La documentation de Jest se lit comme suit :
toBe vérifie simplement qu'une valeur correspond à ce que vous attendez. Il utilise === pour vérifier l'égalité stricte.
Et pour toEqual
:
Utilisez .toEqual lorsque vous souhaitez vérifier que deux objets ont la même valeur. Ce comparateur vérifie récursivement l'égalité de tous les champs, plutôt que de vérifier l'identité de l'objet, ce qui est également connu sous le nom de "deep equal". Par exemple, toEqual et toBe se comportent différemment dans cette suite de tests, de sorte que tous les tests passent.
const x = { a: { b: 3 } };
const y = { a: { b: 3 } };
expect(x).toEqual(y);
expect(x).toBe(y);
Dans ce cas, toEqual
passe mais toBe
échoue. Je comprends que toEqual
passe parce qu'il fait un égal profond contrôle. Pourquoi le toBe
qui échoue dans ce cas ?
Par ailleurs, existe-t-il des pratiques exemplaires pour utiliser toBe
y toEqual
(pas seulement dans Jest mais aussi dans d'autres frameworks de test) ?