Scherzen Sie die gleiche Funktion zweimal mit unterschiedlichen Argumenten
Lesezeit: 2 Minuten
Simon Leyendecker
Ich bin neu bei JEST und teste derzeit eine Javascript-Komponente, die einen API-Aufruf in ihrem onComponentDidMount durchführt. Abhängig von den Rückgabedaten des Ajax-Aufrufs (API-Aufruf) zeigt meine Komponente entweder eine Tabelle oder einen einfachen Text an.
Mein JEST-Test ist ziemlich einfach, im Moment teste ich nur, um mit den aktuellen Schnappschüssen übereinzustimmen. Da mein API-Aufruf unterschiedliche Daten zurückgeben kann, kann mein Snapshot zwei verschiedene Aspekte haben: 1) einen mit einer Tabelle 2) einen mit einem einfachen Text.
Meine Komponente macht das myService.index() richtig anrufen, alles, was ich ihm verschiedene Werte übergeben möchte, die es für den Rückruf verwenden wird.
Dies funktioniert hervorragend für das erste Beispiel, aber ich kann anscheinend keine richtige Antwort finden, die zu mir passt. Können Sie mir helfen ? 🙂
Klugjo
1- Wenn Sie möchten, dass der Mock bei jedem Aufruf unterschiedliche Ergebnisse zurückgibt:
der mock wurde mit angerufen '1st call args' beim ersten Mal hieß es -> mock('1st call args')
der mock wurde mit angerufen '2nd call arg 1' und '2nd call arg 2' beim zweiten Mal hieß es -> mock('2nd call arg 1', '2nd call arg 2')
3- Wenn Sie eine bestimmte Antwort basierend auf dem Funktionsparameter wünschen
Es wird von Jest standardmäßig nicht unterstützt, aber Sie können es sich ansehen jest wann was es Ihnen ermöglicht, Folgendes zu tun:
when(fn).calledWith(1).mockReturnValue('yay!')
Wusste nichts von toHaveBeenNthCalledWith, es sieht so praktisch aus, danke Kumpel!
– Simon Leyendecker
7. Februar 2020 um 13:15 Uhr
Wenn nur die Jest-Dokumentation so hilfreich und prägnant wäre. Danke dir.
– Matt Trax
15. Dezember 2020 um 16:18 Uhr
Können wir dies zum Testen von Hooks verwenden, die einen booleschen Wert in einer Komponente zurückgeben?
– Sri Vineeth
25. Juli 2022 um 1:28 Uhr
Bitte überprüfen Sie die Jest docs darauf. Sie können verschiedene Werte zurückgeben, wenn Sie eine Funktion verspotten, und einmal einen gewünschten Wert und später einen anderen Wert zurückgeben.
Okay, das ist schon eine große Hilfe. Aber was ist mit der Übergabe von Werten an diesen Schein? Grundsätzlich möchte ich dazu übergehen {a: 1, b:2} in einem Fall u {} in einem anderen Fall
– Simon Leyendecker
21. Dezember 2018 um 15:35 Uhr
14385400cookie-checkScherzen Sie die gleiche Funktion zweimal mit unterschiedlichen Argumentenyes