Wie kann ich die in der Scherz-Mock-Funktion aufgerufenen Argumente erhalten?


78

Wie kann ich die in der Scherz-Mock-Funktion aufgerufenen Argumente erhalten?

Ich möchte das Objekt untersuchen, das als Argument übergeben wird.


3
Wenn ich herausfinde, wie die Frage gelöst werden kann, wo liegt das Problem? In diese Frage habe ich keinen Code eingefügt, weil ich nicht wusste, wie ich anfangen soll. Das war der Zweck der Frage.
Bruno Quaresma

1
@PLATANIUM umm was? Zunächst kann er seine eigene Frage beantworten, da ihm die Website dies tatsächlich erlaubt. Zweitens ist seine Antwort richtig.
Martin Dawson

Antworten:


125

Verwenden Sie einfach mockObject.calls . In meinem Fall habe ich verwendet:

const call = mockUpload.mock.calls[0][0]

Hier ist die Dokumentation über die mockImmobilie


Gibt es außer der Scheinfunktion eine andere Möglichkeit, die Argumente der Funktion im Scherz zu bekommen?
Coder

2
Vielen Dank! An andere und mein zukünftiges Ich: Wenn Tuple type '[]' of length '0' has no element at index '0'.beim zweiten Mal ein Kompilierungsfehler auftritt 0, können Sie ihn mithilfe von umgehen const call = (mockUpload.mock.calls[0] as any[])[0];.
Cameron Hudson

39

Hier ist eine einfache Möglichkeit, den übergebenen Parameter zu bestätigen.

expect(mockedFunction).toHaveBeenCalledWith("param1","param2");

Was ist, wenn das zweite Argument eine Funktion ist, auf die ich keinen Zugriff habe?
Hugo Licon

2
In diesem Fall gehen Sie mit diesem AnsatzmockUpload.mock.calls[0]
Senthil Arumugam SP

Gleich wie andere Antwort. Dies beantwortet die Frage nicht. Er fragt nicht, wie er überprüfen soll, mit welchem ​​Argument es aufgerufen wurde, sondern er holt dieses Argument, damit er es überprüfen kann.
Javi Marzán

0

Ich ziehe es lastCalledWith()vor toHaveBeenCalledWith(). Sie sind beide gleich, aber die erstere ist kürzer und hilft mir, die kognitive Belastung beim Lesen von Code zu verringern.

expect(mockedFn).lastCalledWith('arg1', 'arg2')

1
Dies beantwortet die Frage nicht. Er fragt nicht, wie er überprüfen soll, mit welchem ​​Argument es aufgerufen wurde, sondern er holt dieses Argument, damit er es überprüfen kann.
Javi Marzán

1
@ JaviMarzán Ich kam von Google, weil ich wissen wollte, wie man die Funktionsargumente behauptet. Menschen, die zu dieser Frage kommen, möchten möglicherweise nicht unbedingt die Argumente untersuchen, sondern das Argument erhalten und geltend machen. Deshalb lasse ich die Antwort hier in der Hoffnung, anderen zu helfen, die ähnliche Probleme haben.
NearHuscarl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.