我怎样才能得到在jest mock函数中调用的参数?

cetgtptt  于 2023-03-06  发布在  Jest
关注(0)|答案(6)|浏览(183)

我怎样才能得到在jest mock函数中调用的参数?
我想检查作为参数传递的对象。

lztngnrs

lztngnrs1#

只需使用mockObject.calls。在我的例子中,我使用了:

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

以下是有关mock属性的文档

sqxo8psd

sqxo8psd2#

下面是Assert传递的参数的简单方法。

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

qojgxg4l3#

您可以将toHaveBeenCalledWith()expect.stringContainingexpect.arrayContaining()expect.objectContaining()一起使用

...
const { host } = new URL(url);
expect(mockedFunction).toHaveBeenCalledWith("param1", expect.stringContaining(`http://${host}...`);
xwmevbvl

xwmevbvl4#

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

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

jrcvhitl5#

我们可以在mock方法中添加一个mockImplementation,并让它返回参数以用于求值。

c8ib6hqw

c8ib6hqw6#

使用一个参数捕获器,类似于:

let barArgCaptor;
const appendChildMock = jest
    .spyOn(foo, "bar")
    .mockImplementation(
    (arg) => (barArgCaptor = arg)
    );

然后你就可以随心所欲地expect俘获者的财产:

expect(barArgCaptor.property1).toEqual("Fool of a Took!");
expect(barArgCaptor.property2).toEqual(true);

相关问题