如何测试对象包含玩笑?

时间:2019-04-29 07:36:18

标签: javascript node.js jestjs

我有一个要验证功能的测试,称为
具有特定值和包含数组的对象。

this个文档之后,我正在执行以下测试:

test('...', () => {
  ...
  expect(queue.publish).toBeCalledWith('fetch-part', expect.objectContaining({
    parts: expect.arrayContaining ([
      'a',
      'b'
    ])
  })
})

此测试无法显示接收到的对象具有不存在的值
另外,它表示数组中各项的顺序很重要。

如何测试对象中的特定字段(即数组)包含一些值?

1 个答案:

答案 0 :(得分:0)

  

如何测试对象中的特定字段(即数组)包含一些值?

您的方法是一种很好的方法。

这是一个简单的工作示例:

it('should work', () => {
  const spy = jest.fn();

  spy('fetch-part', {
    parts: ['z', 'c', 'b', 'y', 'a', 'x'],
    somethingElse: 'hello world'
  });

  expect(spy).toBeCalledWith('fetch-part', expect.objectContaining({
    parts: expect.arrayContaining([
      'a',
      'b'
    ])
  }));  // Success!
});

更新

OP在评论中提到他们决定使用.mock.calls来获取参数并直接对其进行测试:

it('should work', () => {
  const spy = jest.fn();

  spy('fetch-part', {
    parts: ['z', 'c', 'b', 'y', 'a', 'x'],
    somethingElse: 'hello world'
  });

  expect(spy.mock.calls[0][1].parts).toContain('a', 'b');  // Success!
});