174 votes

Quelle est la différence entre "toBe" et "toEqual" dans Jest ?

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) ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X