Представьте, что вы разрабатываете какое-то устаревшее приложение и должны использовать глобальные переменные. Как вы можете выполнять модульные тесты, поддерживая использование глобальных переменных?
В этом посте я дам вам несколько идей о том, как вы можете это сделать.
Оставайтесь со мной, и если вы можете оставить комментарий, расскажите мне, что вы делаете для решения этой проблемы.
Статические методы
Если вы тестируете статические методы и у вас нет экземпляра, вы можете использовать эти два варианта, о которых я говорю ниже.
Обратите внимание, что первый вариант позволяет вам не вносить изменения в исходный код.
Это может быть хорошо.
Но внедрение делает реализацию более гибкой.
Объявление глобальной переменной
Вы можете в модульном тесте объявить глобальную переменную.
Таким образом, тестируемый код останется прежним, и его не нужно будет менять.
Внедрение как необязательный параметр
Если вы тестируете статические методы и у вас нет экземпляра, вы можете добавить новый необязательный параметр с переменной.
Затем вы можете добавить следующую проверку в первую строку статического метода:
Таким образом, в модульном тесте вы предоставляете переменную без необходимости объявлять глобальную.
Методы экземпляра
В этом случае вы можете внедрить глобальную переменную, используя конструктор или новый метод установки.
Глобальная переменная теперь является новым свойством экземпляра и отвечает за создание экземпляра класса для предоставления этих данных.
Каково твое мнение? Что ты предпочитаешь?
Второй вариант, если он доступен, с методами экземпляра, внедрением через методы конструктора или установщика всех зависимостей, является предпочтительным подходом.
Таким образом, позже все зависимости могут быть предоставлены без необходимости изменения реализации.
Конечно, в идеале следует отказаться от использования глобальных переменных, но в некоторых кодовых базах это непростая задача.
В качестве первого шага вы можете создать модульные тесты, чтобы получить больше информации о реализации, и итеративно развивать кодовую базу, чтобы устранить эти плохие практики.