Yeni bir projeye başlıyorum ve tasarımı yönlendirmek için TDD'yi kullanmak için çok uğraşıyorum. Yıllardır zorluyorum ve nihayet düzgün bir şekilde nasıl yapılacağını öğrenirken projeyi kullanmak için fazladan zaman harcamak için onay aldım.
Bu, mevcut bir sisteme bağlamak için yeni bir modüldür. Şu anda, tüm veri erişimi çoğunlukla veritabanı saklı yordamları üzerinde ince bir sargı olan web hizmetleri aracılığıyla gerçekleşir.
Bir gereksinim, belirli bir mağaza için, bu uygulama için geçerli kabul edilen tüm Satın Alma Siparişlerini iade etmemdir. PO'nun, gönderim tarihi mağazaların açılış tarihinden belirli bir aralığa düşmesi durumunda geçerli sayılır (bu yeni mağazalar içindir).
Şimdi, bu mantığı uygulama koduna koyamıyorum, çünkü yukarıdaki kısıtlama göz önüne alındığında, bu mağazaya başvurabilecek düzine almak için bir milyon PO geri getirmeyeceğim.
Tarih aralığını GetValidPOs proc'a geçirebileceğimi ve geçerli PO'ları döndürmek için bu değerleri kullanmasını sağlayabiliyordum. Ancak, geçerli bir PO olarak kabul edilen şeye başka bir gereksinim eklersek ne olur?
Bunu nasıl test edebilirim ve çalışmaya devam ettiğini nasıl doğrulayabilirim? ORM kullanmıyoruz ve gerçekleşmesi pek mümkün değil. Ve testimde DB'yi arayamam.
Sıkıştım.
Diğer düşüncem, geçerli verileri döndüren bazı taklitler, bazı kötü veriler döndüren ve kötü veri oluşursa yerel havuzun bir istisna atmasını ve geçersiz verilerin GetValidPOs proc ( testte kullanılan alay).
Bu mantıklı mı? Yoksa daha iyi bir yol var mı?
GÜNCELLEME: Görünüşe göre EF'i kullanabiliyorum. Şimdi sadece nasıl kullanılacağını anlamaya ve test edilebilir hale getirmeye ihtiyacım var, yine de saklı prosedürlere ve çeşitli veritabanlarına dağılmış olmanın zorluğuna güvenebiliyorum.