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

Posted

技术标签:

【中文标题】如何使用 Jest 测试部分对象?【英文标题】:How can I test part of object using Jest? 【发布时间】:2018-08-09 05:51:17 【问题描述】:

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

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

● 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)

【问题讨论】:

这能回答你的问题吗? What's the difference between '.toMatchObject' and 'objectContaining' 【参考方案1】:

要检查预期对象是否是接收对象的子集,您需要使用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() 旨在检查项目是否在数组中。

【讨论】:

非常感谢,你让我的生活变得轻松了很多 :)

以上是关于如何使用 Jest 测试部分对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用不同的jest.config.js进行单元和组件测试?

如何使用 Jest 模拟 JavaScript 窗口对象?

如何在 Jest 测试中使用 nuxt 运行时配置变量

如何在 Jest 测试中导入 JSON 文件?

如何使用 Jest 和 Enzyme 测试样式组件以具有属性

如何使用 Jest 模拟对象中的特定函数?