我使用了Typescript和Jest。在Jest中,如果我想检查函数是否被调用,我可以运行
expect(myMockFn).toHaveBeenCalledWith(arrayArgument);
我想检查我的函数是否是用一个数组参数调用的,该参数包含一个具有某些值的对象。例如,
expect(myMockFn).toHaveBeenCalledWith( [{x: 2, y: 3}] );
实际的调用是使用如下所示的参数进行的
[{x: 2, y: 3, id: 'some-guid'}]
所以我的expect失败了,因为我在数组的第一个对象中没有id属性,但是我想匹配并忽略ID,因为它每次都不一样,即使其他参数是一样的,我怎么用Jest构造这样一个expect调用呢?
1条答案
按热度按时间mrfwxfqh1#
您可以使用
arrayContaining
和objectContaining
的组合来完成此操作。参考:
下面是一些示例代码:
样本输出:
以下是一些解释:
1.使用
expect.arrayContaining
调用toHaveBeenCalledWith
,expect.arrayContaining
将验证是否使用数组调用toHaveBeenCalledWith
expect.arrayContaining
有一个数组。该数组有一个objectContaining
对象,该对象与该对象进行部分匹配。