Javascript 如何获取jest mock函数中调用的参数?
如何获取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
我想检查作为参数传递的对象。只需使用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我来自谷歌,因为我想知道如何断言函数参数。提出这个问题的人可能不一定想检查论点,而是想得到论点并坚持它。这就是为什么我把答案留在这里,希望能帮助其他有类似问题的人。