Я начинающий разработчик JavaScript, и у меня возникают проблемы с модульными тестами. Я использую Jest. Я запускаю тесты с Node.js 13.14.0 (я использую более старую версию, потому что у меня Windows 7). У меня была следующая проблема: мне нужно было смоделировать функцию из того же модуля, где находится тестируемая функция. Проще говоря, функция вызывает другую функцию из того же модуля, и я хочу убедиться, что она вызывается. После поиска в Google я не нашел полного решения. Мне понравился вариант использования плагина rewire, но это нарушает покрытие кода. Я экспортирую функции из модуля следующим образом:
module.exports = {
functions...
}
Затем я импортирую их в тестовый файл, используя require.
Я видел, что людям, которые столкнулись с этой проблемой, советовали некоторые методы с использованием модулей ES6, но я не смог понять, как заставить их работать, и у меня нет острой необходимости использовать их в моем проекте. Так все же, есть ли какое-нибудь полноценное решение? Может быть, мне следует использовать другую среду тестирования? И я не очень понимаю, почему эта проблема вообще существует. Является ли использование одной функции на модуль обычной практикой?
Во всяком случае, я ищу какой-нибудь простой способ, например, с помощью rewire:
const otherFuncMock = module.__set__(otherFunc, jest.fn())
module.func() // calls otherFunc()
expect(otherFuncMock).toHaveBeenCalledTimes(1)