开玩笑:toMatchObject 方法中的对象值是数组并检查长度(不为空)

问题描述 投票:0回答:2

我用

.toMatchObject()
编写 Jest 测试并遇到以下问题。我的一些对象的值是数组,我想测试它们是否有长度或为空。

我现在的代码:

test('suite one', async () => {
  //return { key_one: ["string", ...], key_two: .... }
  const result = await function(args);
  expect(result).toMatchObject({
    key_one: expect.any(Array),
    key_two: expect.any(OtherResult),
    ...
  })
})

我明白,我总是可以选择扩展

expect
,但是还有其他选项可以在
toMatchObject
阶段内实现所需的结果,并且无需在
toMatchObject
之后使用
expect(result.key_one).toHaveLength(1)
编写额外的字符串吗?

javascript node.js unit-testing jestjs
2个回答
0
投票

正如@Estus Flask提到的,现在已经有了这样的选项。

但是如果 Jest 以某种方式添加此功能,请写下您自己的答案并标记我为您更新

answered mark


0
投票

您可以执行类似的操作来检查对象上的属性是否是具有特定长度的数组

expect(result).toBe(expect.objectContaining({
    key_one: Array(1).fill(expect.anything()),
}));
© www.soinside.com 2019 - 2024. All rights reserved.