Как проверить объектКонтейнер, используя шутку? - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть тест, в котором я хочу проверить, что функция была вызвана
с определенным значением и объектом, содержащим массив.

После этого документов я выполняю следующий тест:

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

Этот тест не пройден, показывая, что полученный объект имеет значения, которых не существует
в ожидаемом плюсе написано, что порядок элементов в массиве важен.

Как я могу проверить, что определенное поле (которое является массивом) в объекте содержит некоторые значения?

1 Ответ

0 голосов
/ 29 апреля 2019

Как я могу проверить, что определенное поле (которое является массивом) в объекте содержит некоторые значения?

Ваш подход - хороший подход.

Вотпростой рабочий пример:

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!
});

Обновление

ФП упомянул в комментариях, что они решили использовать .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!
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...