Более гибкий способ - использовать 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 });