如何使用Jest测试对象的一部分?

问题描述 投票:5回答:1

我想测试时间是否正确解析,我只对检查一些属性而不是整个对象感兴趣。在这种情况下小时和分钟。

我尝试使用expect(object).toContain(value),但正如你在下面的代码片段中看到的那样,尽管对象包含我感兴趣的属性并且它们具有正确的值,但它失败了。

● Calendar > CalendarViewConfig › it should parse time

expect(object).toContain(value)

Expected object:
  {"display": "12:54", "full": 774, "hour": 12, "hours": 12, "minutes": 54, "string": "12:54"}
To contain value:
  {"hours": 12, "minutes": 54}

  67 |   it('it should parse time', () => {
  68 |     ...
> 69 |     expect(parseTime('12:54')).toContain({ hours: 12, minutes: 54})
  70 |   })

  at Object.<anonymous> (src/Components/Views/Calendar/CalendarViewConfig.test.js:69:32)
javascript tdd jestjs
1个回答
16
投票

要检查预期对象是否是接收对象的子集,您需要使用toMatchObject(object)方法:

expect(parseTime('12:54')).toMatchObject({ hours: 12, minutes: 54})

expect.objectContaining(object)匹配:

expect(parseTime('12:54')).toEqual(expect.objectContaining({ hours: 12, minutes: 54}))

它们的工作方式略有不同,请查看What's the difference between '.toMatchObject' and 'objectContaining'了解详情。

toContain()旨在检查项目是否在数组中。

© www.soinside.com 2019 - 2024. All rights reserved.