Bir ton "iş mantığı" sql operasyonunu içeren orta kademe sürecimizi test etmeye başladığımızda belki de deneyimlerimizin tadını çıkarabilirim.
İlk olarak, herhangi bir makul veritabanı bağlantısını "yuvalamamıza" izin veren bir soyutlama katmanı oluşturduk (bizim durumumuzda tek bir ODBC tipi bağlantıyı destekledik).
Bir kez bu yerdeydi, daha sonra kodumuzda böyle bir şey yapabildik (C ++ ile çalışıyoruz, ancak fikri anladığınızdan eminim):
GetDatabase (). ExecuteSQL ("foo (blah, blah) içine yerleştirin")
Normal çalışma zamanında, GetDatabase () ODBC üzerinden tüm veritabanımızı (sorgular dahil) besleyen bir nesneyi doğrudan veritabanına döndürür.
Daha sonra bellek içi veritabanlarına bakmaya başladık - en iyisi uzun zamandır SQLite gibi görünüyor. ( http://www.sqlite.org/index.html ). Kurulumu ve kullanımı son derece basittir ve GetDatabase'i () alt sınıfı ve geçersiz kılmamıza izin vererek, yapılan her test için oluşturulan ve imha edilen bir bellek içi veritabanına sql iletmemize izin verdi.
Hala bunun ilk aşamalarındayız, ancak şu ana kadar iyi görünüyor, ancak gerekli tüm tabloları oluşturduğumuzdan ve bunları test verileriyle doldurduğumuzdan emin olmalıyız - ancak burada iş yükünü biraz azalttık bizim için çok şey yapabilen genel bir yardımcı fonksiyonlar dizisi.
Genel olarak, TDD sürecimizle son derece yardımcı oldu, çünkü bazı hataları düzeltmek için oldukça zararsız değişiklikler yapmak, sql / veritabanlarının doğası nedeniyle sisteminizin diğer (tespit edilmesi zor) alanlarında oldukça garip etkiler yaratabilir.
Açıkçası, deneyimlerimiz bir C ++ geliştirme ortamı etrafında odaklanmıştır, ancak eminim PHP / Python altında benzer bir şey alabilirsiniz eminim.
Bu yardımcı olur umarım.