Это сбило меня с толку пару раз.
Если вы не предоставите фиктивную реализацию для jest.mock
, она вернет объект, который отражает экспорт моделируемого модуля, но каждая функция будет заменена на макет jest.fn()
. Это довольно аккуратно, так как часто это то, что вы хотите. Но чтобы определить экспорт модуля, он должен сначала require
его. Это то, что вызывает запуск console.log
.
Два возможных решения:
- Не запускайте код на верхнем уровне модуля: вместо этого экспортируйте функцию, которая выполняет код.
- Предоставьте свою собственную макетную реализацию, чтобы не нужно было анализировать модуль
jest.mock('./foo', () => {})