2011-04-19 14 views
5

Ben birim testinde yeni bir kullanıcıyım. - görünüyorÜnitenin basit bir yolu, tembel bir yük özelliğini test eder

private SubscriptionType _subscriptionType; 
public SubscriptionType SubscriptionType 
{ 
    get 
    { 
     if (_subscriptionType == null ||_subscriptionType.SubscriptionTypeId != this.SubscriptionTypeId) 
     { 
      if (this.SubscriptionTypeId !=0) 
       _subscriptionType = SubscriptionType.Load(this.SubscriptionTypeId); 
     } 

     return _subscriptionType; 
    } 
} 

Ben (ifadeler varsa) ve gerçek SubscriptionType yük işlevselliği özelliğinde mantık test etmek gerekir: Bu basit bir çözüm olup olmadığını biriminin tembel yük özelliğini test ve merak bir sorun tökezledi Buradaki en bariz yaklaşım gibi, muhtemelen SubscriptionType.Load'u tasarlamak ve bir mock yöntemiyle değiştirmek için bazı IoC türlerini kullanmak olacaktır. Sadece bu tür bir geri çekilmeyi önlemek için daha basit bir yol olup olmadığını merak ediyorum - doğru bir ünite test vakası yazmak için biraz fazla bir üst mühendisliğe benziyor. Düşünceleriniz? Teşekkürler!

+4

NET 4'teki Lazy sınıfına bakın. Bunu kullanarak, daha az kodunuz olacaktır - muhtemelen birim testine bile değecek hiçbir şey yok –

+1

Neyi test etmeye çalışıyorsunuz? Mülkün doğru veri içerdiği gerçeği ya da tembel bir şekilde yüklenmiş olduğu gerçeği? – zerkms

+0

Koşullar yerine getirildiğinde yükü çalıştırdığı mantığı test etmeye çalışmak – DSY

cevap

5

TypeMock Isolator veya Moles kullanmak istemediğiniz sürece, bir arabirimin arkasındaki Load yöntemini gizlemek ve bunu sınıfa enjekte etmeniz gerekir. Etrafında bir yol yok, ama bunu sadece test edilebilirlik adına yapmayacaksın. Genellikle, endişelerinizden böyle bir refakatçiden daha iyi ayrılma eğiliminde olursunuz.

İlgili konular