Jest Dokumentation lautet:Was ist der Unterschied zwischen "toBe" und "toEqual" in Jest?
Tobe prüft nur, dass ein Wert ist, was Sie erwarten. Es verwendet ===, um strikte Gleichheit zu prüfen.
Und für toEqual
:
Verwenden .toEqual, wenn Sie, dass zwei Objekte den gleichen Wert haben überprüfen möchten. Dieser Matcher überprüft rekursiv die Gleichheit aller Felder, anstatt nach der Objektidentität zu suchen - dies wird auch als "tief gleich" bezeichnet. Zum Beispiel verhalten sich toEqual und toBe in dieser Testsuite unterschiedlich, so dass alle Tests bestanden werden.
const x = { a: { b: 3 } };
const y = { a: { b: 3 } };
expect(x).toEqual(y);
expect(x).toBe(y);
In diesem Fall toEqual
Pässe aber toBe
ausfällt. Ich verstehe, dass toEqual
vergeht, weil es eine tief gleiche Prüfung macht. Warum schlägt der toBe
in diesem Fall fehl?
Gibt es auch Best Practices für die Verwendung von toBe
und toEqual
(nicht nur in Jest, sondern auch in anderen Test-Frameworks)?
Also nicht gleich sind ich für nicht-Primitiven erraten, 'toBe' überprüft die Speicheradresse der Variablen? –
Es ist nur eine einfache JS-Funktion, die Sie mit '=== ' –
@SheonHan Ja, das ist richtig – nfw