首页 > 解决方案 > 断言 Set 包含部分副本预期的对象 - 玩笑

问题描述

我有一个包含结构对象的集合:

{
    param1: string,
    param2: string,
    param3: string
}

Set.has尝试匹配所包含数据的部分副本时,是否可以对我的集合执行检查?IE。一个对象,包含:

{
    param2: string,
    param3: string
}

预期对象错过了第一个param1参数的地方......

我尝试了以下方法:

expect(mySet.has(expect.objectContaining(myData))).toBeTruthy();

我原以为expect.objectContaining()会解决我的问题...

我还尝试通过添加“丰富”预期数据:

myData.param1 = expect.any(String);

但这同样不起作用......

标签: javascriptarraystestingsetjestjs

解决方案


您可以将其转换为数组并断言数组的每个项目将仅包含对象并描述对象

describe('mySet', () => {
  const items = Array.from(mySet);
  test.each(items)('that each item of your set has objects with the following stucture', item => {
    expect(item).toEqual(
      expect.objectContaining({
        param2: expect.any(String),
        param3: expect.any(String)
      })
    )
  });
});

工作示例


推荐阅读