Игнорируя, что это плохо, допустим, у меня есть файл Javascript, который при нормальной работе запускается в определенном контексте.Этот файл:
- Ожидает существование некоторых глобальных переменных
- Определяет некоторые функции
- Вызывает некоторые из своих собственных функций
- Вызывает некоторые функциинаходится в глобальном пространстве имен
- Изменяет некоторые данные глобального пространства имен
Я хочу настроить некоторые тесты для содержимого этого файла, но я испытываю затруднения.
Я попытался:
- Настройка глобального контекста, бросая ожидаемые вещи в
global
, затем требуя модуль, затем проверяя ожидаемые побочные эффекты.Это работает, но я не выяснил, как затем изменить глобальный контекст и сделать это снова, чтобы каждый раз получать ожидаемый результат. - Требуется модуль с rewire чем требуется, так что я могу обезьяна-патч некоторые из его функций для дальнейшего тестирования.Это также работает, но все еще не идеально.
Какие стратегии и структуры могут быть полезны?
Есть ли способ загрузить модуль и получить доступ / исправить / проверить функции, которые онобъявляет перед побочными эффектами файла?