2011-04-19 12 views
5

Jestem trochę początkującym w testowaniu jednostkowym. Natknął się na problem testów jednostkowych leniwy właściwość obciążenia i zastanawiałem się, czy istnieje proste rozwiązanie, że:Prosty sposób testowania właściwości leniwego obciążenia

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

muszę przetestować logikę w nieruchomości (if), a nie rzeczywista funkcjonalność obciążenie SubscriptionType - wydaje jak najbardziej oczywistym podejściem byłoby prawdopodobnie streszczenie SubscriptionType.Load i użycie pewnego rodzaju IoC do zastąpienia metodą próbną. Zastanawiam się, czy istnieją prostsze sposoby na uniknięcie tego rodzaju refaktoryzacji - wydaje się, że jest to trochę przesadzone, aby napisać poprawny test jednostkowy. Twoje myśli? Dzięki!

+4

Spójrz na Lazy klasy w .NET 4. Korzystanie że będziesz musiał sposób mniej kodu - chyba nic nawet warte testów jednostkowych –

+1

Co chcesz przetestować? Fakt, że nieruchomość zawiera poprawne dane lub fakt, że jest załadowany w leniwy sposób? – zerkms

+0

Próba sprawdzenia logiki, która wywołuje Load, gdy spełnione są warunki i omija obciążenie w przeciwnym razie – DSY

Odpowiedz

5

Chyba że chcesz użyć izolatora typu Mock lub Mola, musisz ukryć metodę Load za interfejsem i wprowadzić ją do klasy. Nie da się tego obejść, ale nie tylko robisz to dla celów testowalności. Zwykle masz również tendencję do lepszego oddzielenia obaw od takiego refaktoryzacji.

Powiązane problemy