Uygulamalarımın çoğunda, diskten çeşitli ayarları okumaktan sorumlu bir singleton veya statik "config" nesnem var. Hemen hemen tüm sınıflar, çeşitli amaçlar için kullanır. Temelde bu sadece ad / değer çiftlerinin bir karma tablosu. Salt okunur, bu yüzden çok fazla küresel devlete sahip olduğum gerçeğiyle fazla ilgilenmedim. Ama şimdi birim testine başladığımdan beri, sorun olmaya başlıyor.
Bir sorun, genellikle çalıştırdığınız aynı yapılandırma ile test etmek istememenizdir. Bunun için birkaç çözüm var:
- Config nesnesine SADECE test için kullanılan bir ayarlayıcı verin, böylece farklı ayarlardan geçebilirsiniz.
- Tek bir yapılandırma nesnesini kullanmaya devam edin, ancak onu bir tekilden, ihtiyaç duyduğu her yere ilettiğiniz bir örneğe değiştirin. Daha sonra bir kez uygulamanızda ve bir kez testlerinizde farklı ayarlarla yapılandırabilirsiniz.
Fakat her iki durumda da, hala ikinci bir sorunla karşılaşıyorsunuz: hemen hemen her sınıf config nesnesini kullanabilir. Bu yüzden bir testte, test edilen sınıf için konfigürasyon ayarlamanız, fakat aynı zamanda bağımlılıklarının ALL'sini ayarlamanız gerekir. Bu, test kodunuzu çirkin yapabilir.
Bu tür config nesnesinin kötü bir fikir olduğu sonucuna varmaya başladım. Ne düşünüyorsun? Bazı alternatifler neler? Her yerde yapılandırma kullanan bir uygulamayı yeniden düzenlemeye nasıl başlıyorsunuz?