如何获得在笑话模拟函数中调用的参数?


77

如何获得在笑话模拟函数中调用的参数?

我想检查作为参数传递的对象。


3
如果我发现如何解决问题,那是什么问题?在这个问题中,我不放置代码,因为我不知道如何开始。那是问题的目的。
布鲁诺·夸

1
@Platanium umm是什么?首先,鉴于该站点实际上允许他这样做,他可以自由回答自己的问题。第二,他的回答是正确的。
马丁·道森

Answers:


124

只需使用mockObject.calls即可。就我而言,我使用了:

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

这是关于物业文件mock


除了模拟功能以外,还有其他方法可以开玩笑地获取该功能的参数吗?
编码器

2
谢谢!对于其他人和我未来的自己:如果Tuple type '[]' of length '0' has no element at index '0'.第二次遇到编译错误0,可以使用来解决它const call = (mockUpload.mock.calls[0] as any[])[0];
卡梅隆·哈德森

39

这是断言所传递参数的简单方法。

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

如果第二个参数是我无法访问的函数怎么办?
雨果·利孔

2
在这种情况下,请采用这种方法mockUpload.mock.calls[0]
Senthil Arumugam SP

与其他答案相同。这不能回答问题。他不是在问如何检查调用了哪个参数,而是要获取该参数以便他可以检查它。
哈维·马赞(JaviMarzán)

0

我喜欢lastCalledWith()toHaveBeenCalledWith()。它们都相同,但前者较短,可以帮助我减少阅读代码时的认知负担。

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

1
这不能回答问题。他不是在问如何检查调用了哪个参数,而是要获取该参数以便他可以检查它。
哈维·马赞

1
@JaviMarzán我来自Google,因为我想知道如何声明函数参数。提出这个问题的人可能不一定要检查论点,而是要获得论点并断言。这就是为什么我在这里留下答案,希望能帮助其他有类似问题的人。
NearHuscarl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.