2011-04-19 4 views
5

私は単体テストの初心者です。ユニットの問題怠惰な負荷特性をテストし、それに簡単な解決策がある場合は疑問につまずい:私は(if文)プロパティのロジックをテストする必要があり遅延ロードの単体テストテストの簡単な方法

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; 
    } 
} 

はなく、実際のSubscriptionTypeロード機能 - 思えますここで最も明白なアプローチのように、おそらくSubscriptionType.Loadを抽象化し、ある種のIoCを使って模擬メソッドに置き換えることになります。 このようなリファクタリングを避けるための簡単な方法があるかどうかは不思議です。正確な単体テストケースを書くのはやや難しいようです。 あなたの考えは? ありがとう!

+4

.NET 4でLazy クラスを見てください。これを使用すると、コードが少なくて済みます。おそらく単体テストの価値はありません。 –

+1

何を試そうとしていますか?プロパティーに正しいデータが含まれているか、またはレイジーにロードされているという事実? – zerkms

+0

条件が満たされたときにLoadを呼び出すロジックをテストし、そうでない場合はLoadをバイパスします。 – DSY

答えて

5

TypeMock IsolatorまたはMolesを使用しない場合は、インターフェイスの背後にあるLoadメソッドを非表示にして、クラスに注入する必要があります。その周りには方法はありませんが、テスト容易性のために行うだけではありません。通常、そのようなリファクタリングからの懸念をよりよく分離する傾向があります。