Что вы здесь не так делаете?
- Экспорт по умолчанию в вашем макете вместо имени, как в реализации
В вашей реализации вы Вы используете именованный экспорт, и вы импортируете { getGroups }
, поэтому, чтобы он заработал, вам нужно изменить свой макет следующим образом
__mocks__\getGroups.js
export const getGroups = async () => {
return {
groups: [
{ id: 1, name: 'Data1' },
{ id: 2, name: 'Data2' }
]
};
};
рабочий пример
TL; DR
Тестирование макета
Нет смысла тестировать макет функции. Это не доказывает, что ваша реализация работает. Даже если вы измените свою реализацию, ваши тесты все равно пройдут.
Используйте mocks только для зависимостей вашей реализации
Использовать
jest.genMockFromModule Он создаст
jest.fn()
для каждого из экспортируемых методов модуля и сохранит константы, что позволит вам изменить возвращаемое значение / реализацию для некоторых тестовых случаев, а также сможет написать утверждения, если функция была вызвана
__mocks__\getGroups.js
const mock = jest.genMockFromModule('../getGroups');
mock.getGroups.mockResolvedValue({
groups: [
{ id: 1, name: 'Data1' },
{ id: 2, name: 'Data2' }
]
})
module.exports = mock;
Jest автоматически поднимет вызовы jest.mock (
подробнее ... )
Таким образом, вы можете сначала безопасно оставить операторы импорта, а затем позвонить jest.mock