Geçersiz dönüş türleri / Altyordamlar eski haberlerdir. Ben 8 yıl içinde (Ben son derece tembel olmadıkça) bir Void dönüş türü yapmadım (Bu cevaptan itibaren, bu soru sorulmadan sadece biraz önce).
Gibi bir yöntem yerine:
public void SendEmailToCustomer()
Microsoft'un int.TryParse () paradigmasını izleyen bir yöntem oluşturun:
public bool TrySendEmailToCustomer()
Belki de yönteminizin uzun vadede kullanım için geri vermesi gereken herhangi bir bilgi yoktur, ancak yöntem işini yaptıktan sonra durumunu döndürmek arayan için büyük bir kullanımdır.
Ayrıca, tek durum bool değildir. Önceden yapılmış bir Alt Programın aslında üç veya daha fazla farklı durumu (İyi, Normal, Kötü vb.) Döndürmesi birkaç kez olabilir. Bu durumlarda, sadece
public StateEnum TrySendEmailToCustomer()
Bununla birlikte, Try-Paradigm, geçersiz bir dönüşün nasıl test edileceği hakkındaki bu soruyu bir şekilde cevaplasa da, başka hususlar da vardır. Örneğin, bir "TDD" döngüsü sırasında / sonrasında, "Yeniden Düzenleme" olur ve yönteminizle iki şey yaptığınızı fark edersiniz ... böylece "Tek Sorumluluk İlkesi" ni ihlal edersiniz. Bu yüzden ilk önce ilgilenilmelidir. İkinci olarak, bir bağımlılık tanımlamış olabilirsiniz ... "Kalıcı" Verilere dokunuyorsunuz.
Söz konusu yöntemdeki veri erişimi öğelerini yapıyorsanız, n katmanlı veya n katmanlı bir mimariye yeniden bakmanız gerekir. Ancak "Dizeler daha sonra bir veritabanına eklenir" derken, aslında bir iş mantığı katmanı veya başka bir şey çağırdığınızı varsayabiliriz. Ya, varsayalım.
Nesneniz başlatıldığında, artık nesnenizin bağımlılıkları olduğunu anlıyorsunuz. Bu, Nesneye veya Yönteme Bağımlılık Enjeksiyonu yapıp yapmayacağınıza karar vermeniz gerektiğidir. Bu, Yapıcı'nızın veya söz konusu yöntemin yeni bir Parametreye ihtiyacı olduğu anlamına gelir:
public <Constructor/MethodName> (IBusinessDataEtc otherLayerOrTierObject, string[] stuffToInsert)
Artık işletme / veri katmanı nesnenizin bir arayüzünü kabul edebileceğinize göre, Birim Testleri sırasında bunu taklit edebilir ve "Kazayla" entegrasyon testi bağımlılığı veya korkusu olmayabilir.
Canlı kodunuzda GERÇEK bir IBusinessDataEtc
nesneye geçersiniz . Ancak Birim Testinizde bir MOCK IBusinessDataEtc
nesnesini geçirirsiniz . Bu Mock'ta, int XMethodWasCalledCount
arabirim yöntemleri çağrıldığında durumları güncellenen gibi Arabirim Dışı Özellikler ekleyebilirsiniz .
Bu yüzden Birim Testiniz, Sorularınızdaki Yöntem (ler) inizden geçecek, sahip oldukları mantığı gerçekleştirecek ve IBusinessDataEtc
nesnenizde bir veya iki veya seçilen bir yöntem kümesini çağıracaktır . Birim Testinizin sonunda İddialarınızı yaptığınızda, şimdi test etmeniz gereken birkaç şey var.
- Şimdi bir Try-Paradigma yöntemi olan "Altyordam" ın Durumu.
- Sahte
IBusinessDataEtc
nesnenizin durumu.
İnşaat Seviyesinde Bağımlılık Enjeksiyonu fikirleri hakkında daha fazla bilgi için ... Birim Testi ile ilgili olarak ... Builder tasarım modellerine bakın. Sahip olduğunuz her mevcut arabirim / sınıf için bir arabirim ve sınıf daha ekler, ancak bunlar çok küçüktür ve daha iyi Birim Testi için BÜYÜK işlevsellik artışları sağlar.