Как протестировать модуль с побочными эффектами? - PullRequest
0 голосов
/ 08 мая 2019

Игнорируя, что это плохо, допустим, у меня есть файл Javascript, который при нормальной работе запускается в определенном контексте.Этот файл:

  1. Ожидает существование некоторых глобальных переменных
  2. Определяет некоторые функции
  3. Вызывает некоторые из своих собственных функций
  4. Вызывает некоторые функциинаходится в глобальном пространстве имен
  5. Изменяет некоторые данные глобального пространства имен

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

Я попытался:

  • Настройка глобального контекста, бросая ожидаемые вещи в global, затем требуя модуль, затем проверяя ожидаемые побочные эффекты.Это работает, но я не выяснил, как затем изменить глобальный контекст и сделать это снова, чтобы каждый раз получать ожидаемый результат.
  • Требуется модуль с rewire чем требуется, так что я могу обезьяна-патч некоторые из его функций для дальнейшего тестирования.Это также работает, но все еще не идеально.

Какие стратегии и структуры могут быть полезны?

Есть ли способ загрузить модуль и получить доступ / исправить / проверить функции, которые онобъявляет перед побочными эффектами файла?

...