Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取jest mock函数中调用的参数?_Javascript_Jestjs - Fatal编程技术网

Javascript 如何获取jest mock函数中调用的参数?

Javascript 如何获取jest mock函数中调用的参数?,javascript,jestjs,Javascript,Jestjs,如何获取jest mock函数中调用的参数 我想检查作为参数传递的对象。只需使用mockObject.calls。就我而言,我使用了: const call = mockUpload.mock.calls[0][0] 这里是这里是一个断言传递的参数的简单方法 expect(mockedFunction).toHaveBeenCalledWith("param1","param2"); 我更喜欢lastCalledWith()。它们都是一样的,但前者较短,帮助我减少阅读代码时的认知负荷 exp

如何获取jest mock函数中调用的参数


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

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

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

这里是

这里是一个断言传递的参数的简单方法

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

我更喜欢
lastCalledWith()
。它们都是一样的,但前者较短,帮助我减少阅读代码时的认知负荷

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

如果我发现如何解决问题,问题是什么?在这个问题中,我不放代码,因为我不知道如何开始。这就是问题的目的。@PLATANIUM,嗯,什么?首先,他可以自由回答自己的问题,因为网站实际上允许他这样做。第二,他的答案是正确的。除了mock函数,还有其他方法可以取笑函数的参数吗?谢谢!对于其他人和我未来的自己:如果您得到一个编译错误,长度为“0”的元组类型“[]”在索引“0”处没有元素。在第二个
0
,您可以使用
const call=(mockUpload.mock.calls[0]作为任何[])[0]。谢谢你,@CameronHudson!!!不知何故,当您传递一个像
Jest.fn(()=>“foobar”)
这样的实现时,Jest会尝试细化类型,但当您仅使用
Jest.fn()
时,就不会了,在这种情况下,
调用
的类型是any(而不是可能为空的数组)。进一步挖掘类型:TypeScript中正确的方法是
Jest.fn((args)=>“foobar”)
:明确定义
args
将产生更好的打字效果,并且
mock.calls[0][0]
将被TypeScript接受。这是因为如果在模拟中使用2个参数,
mock.calls[0]
是长度为2的数组。如果使用1参数、长度1和0参数=>长度0。因此,在模拟中,即使不使用参数,也只需使用与函数预期数量相同的参数。如果第二个参数是我无法访问的函数,该怎么办?在这种情况下,使用与其他答案相同的方法
mockUpload.mock.calls[0]
。这并不能回答问题。他不是问如何检查它被称为什么论据,而是问如何得到那个论据以便他可以检查它。这并不能回答问题。他不是在问如何检查调用它的参数,而是获取该参数以便他可以检查它。@JaviMarzán我来自谷歌,因为我想知道如何断言函数参数。提出这个问题的人可能不一定想检查论点,而是想得到论点并坚持它。这就是为什么我把答案留在这里,希望能帮助其他有类似问题的人。