我怎样才能得到在jest mock函数中调用的参数?我想检查作为参数传递的对象。
lztngnrs1#
只需使用mockObject.calls。在我的例子中,我使用了:
const call = mockUpload.mock.calls[0][0]
以下是有关mock属性的文档
mock
sqxo8psd2#
下面是Assert传递的参数的简单方法。
expect(mockedFunction).toHaveBeenCalledWith("param1","param2");
qojgxg4l3#
您可以将toHaveBeenCalledWith()与expect.stringContaining、expect.arrayContaining()或expect.objectContaining()一起使用
toHaveBeenCalledWith()
expect.stringContaining
expect.arrayContaining()
expect.objectContaining()
... const { host } = new URL(url); expect(mockedFunction).toHaveBeenCalledWith("param1", expect.stringContaining(`http://${host}...`);
xwmevbvl4#
比起toHaveBeenCalledWith(),我更喜欢lastCalledWith()。它们都是一样的,但是前者更短,帮助我减少阅读代码时的认知负荷。
lastCalledWith()
expect(mockedFn).lastCalledWith('arg1', 'arg2')
jrcvhitl5#
我们可以在mock方法中添加一个mockImplementation,并让它返回参数以用于求值。
c8ib6hqw6#
使用一个参数捕获器,类似于:
let barArgCaptor; const appendChildMock = jest .spyOn(foo, "bar") .mockImplementation( (arg) => (barArgCaptor = arg) );
然后你就可以随心所欲地expect俘获者的财产:
expect
expect(barArgCaptor.property1).toEqual("Fool of a Took!"); expect(barArgCaptor.property2).toEqual(true);
6条答案
按热度按时间lztngnrs1#
只需使用mockObject.calls。在我的例子中,我使用了:
以下是有关
mock
属性的文档sqxo8psd2#
下面是Assert传递的参数的简单方法。
qojgxg4l3#
您可以将
toHaveBeenCalledWith()
与expect.stringContaining
、expect.arrayContaining()
或expect.objectContaining()
一起使用xwmevbvl4#
比起
toHaveBeenCalledWith()
,我更喜欢lastCalledWith()
。它们都是一样的,但是前者更短,帮助我减少阅读代码时的认知负荷。jrcvhitl5#
我们可以在mock方法中添加一个mockImplementation,并让它返回参数以用于求值。
c8ib6hqw6#
使用一个参数捕获器,类似于:
然后你就可以随心所欲地
expect
俘获者的财产: