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.

Bruno Quaresma
quelle
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

Bruno Quaresma
quelle
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");
Senthil Arumugam SP
quelle
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')
NearHuscarl
quelle
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