Мокинг в Jest с разными возвращаемыми значениями на основе параметра (ов) - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь найти решение для насмешки с параметрами и, сказав, что макет возвращает другое значение в зависимости от параметра. Я придумал решение, приведенное ниже, но оно не совсем правильное, несмотря на то, что оно работает.

1 Ответ

0 голосов
/ 06 мая 2020

Более гибкий способ - использовать Jest spy:

jest.mock('hooks/useResourceAttribute', () => jest.fn());

Таким образом, значение может быть высмеянным по мере необходимости, это приводит к более строгим тестам:

const fetchMock = jest.fn();
...
useResourceAttribute.mockReturnedValue({ value: 'meh', fetch: fetchMock });

Встроенные шпионы Jest обеспечивают базовую c функциональность. Для более сильных шпионов / заглушек Sinon все еще можно использовать с Jest, либо самостоятельно, либо через jest-sinon. Sinon позволяет использовать условные заглушки:

useResourceAttribute
  .withArgs('blah', sinon.match.any, sinon.match.any, sinon.match.any)
  .returns({ value: 'meh', fetch: fetchMock });

useResourceAttribute
  .withArgs('blah2', sinon.match.any, sinon.match.any, sinon.match.any)
  .returns({ value: 'meh2', fetch: fetchMock });
...