我有一个数组:
const dummyArr = [
{ name: "a", city: "c1" },
{ name: "b", city: "c2" },
{ name: "z", city: "c3" }
]
我需要编写一个茉莉花测试,以验证元素是否存在于具有属性name: b
的数组中。
不确定是否可以在这里使用arrayContaining
或objectContaining
。
注意:我需要在toHaveBeenCalledWith
expect(obj.setArray).toHaveBeenCalledWith("personalDetails", .......)
答案 0 :(得分:0)
这是没有自定义匹配器的另一种方法。
我假设dummyArr
是您的假数据,并且您想验证setArray是否被第二个元素(名为'b')调用。
expect(obj.setArray).toHaveBeenCalledWith(
jasmine.arrayContaining([dummyArr.find(el => e.name === 'b')])
);
根据您认为可读的内容,可以在期望值之前进行查找:
const dummyEl = dummyArr.find(el => e.name === 'b');
expect(obj.setArray).toHaveBeenCalledWith(jasmine.arrayContaining([dummyEl]));
请注意,当setArray被包含该元素的任何数组调用时,例如通过整个dummyArr
。如果您希望完全匹配,请改用jasmine.arrayWithExactContents()
。