Я помню, как читал статью о том, как Ruby действительно не нуждается в инфраструктурах DI или DI, потому что классы открыты. В результате вы можете просто переписать конструктор зависимостей, чтобы он возвращал поддельный объект.
Я очень новичок в Clojure и функциональном программировании. Мне интересно, нужна ли Clojure инъекция зависимостей или она может отказаться от нее по аналогичным/другим причинам. Вот конкретный пример работы (не стесняйтесь, как указать, как мой дизайн не идиоматичен Clojure):
Представьте, что вы разрабатываете веб-гусеничный/паук. Он должен пройти веб-страницу, которую вы загрузили. Это действие с побочными эффектами. Веб-страница может меняться при каждом запросе, вы можете отключить интернет-соединение и т.д. Он находит все ссылки на веб-странице, посещает их, а затем обходит их так же.
Теперь вы хотите написать тест, извиняющий клиент http, чтобы он вместо этого возвращал строковый ответ жесткой кодировки. Как вы вызываете программу -main
в тесте и не позволяете ей использовать настоящий клиент http?