Pamiętam, że przeczytałem artykuł o tym, jak Ruby naprawdę nie potrzebuje ramek DI lub DI, ponieważ zajęcia są otwarte. W rezultacie można po prostu przepisać konstruktor zależności, aby zwracał fałszywy obiekt.Czy iniekcja zależności clojure potrzebujesz, aby kod był bardziej sprawdzalny?
Jestem bardzo nowy w Clojure i programowaniu funkcjonalnym. Zastanawiam się, czy Clojure potrzebuje zastrzyku zależności, czy może zrezygnować z podobnych/innych powodów. Oto konkretny przykład, na którym warto pracować (nie krępuj się, jak wskazać, że mój projekt nie jest idiomatyczny dla Clojure):
Wyobraź sobie, że tworzysz robota/pająka. Musi przejść przez pobraną stronę internetową. To jest akcja z efektami ubocznymi. Strona internetowa może się zmienić przy każdym zapytaniu, może zostać przerwane połączenie internetowe itp. Znajduje wszystkie odnośniki na stronie, odwiedza każdą z nich, a następnie przemierza ją w ten sam sposób.
Teraz chcesz napisać test, który wyśmiewa klienta HTTP, więc zamiast tego zwraca ciąg znaków. W jaki sposób wywołujesz program -main
w teście i uniemożliwiasz mu korzystanie z klienta http rzeczywistych?
Patrz: http://stackoverflow.com/questions/13085370/what-is-the-clojure-equivalent-to-google-guice – noahlz