2011-04-19 14 views
5

Sono un po 'un principiante nei test unitari. Inciampato su un problema di un'unità testare una struttura di carico artificiale e si chiede se v'è una semplice soluzione a questo:Un modo semplice per testare un carico pigro proprietà

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

devo testare logica nella proprietà (if) e non l'effettiva funzionalità carico SubscriptionType - sembra come l'approccio più ovvio qui sarebbe probabilmente astratto SubscriptionType.Load e utilizzare qualche tipo di IoC per sostituire con un metodo mock. Mi chiedo se ci siano modi più semplici per evitare questo tipo di refactoring - sembra un po 'di overengineering solo per scrivere un caso di test unitario corretto. I tuoi pensieri? Grazie!

+4

Guarda la classe Lazy in .NET 4. Usando questo, avrai molto meno codice - probabilmente nulla vale nemmeno la pena di testare le unità –

+1

Cosa stai provando a testare? Il fatto che la proprietà contenga dati corretti o il fatto che sia caricata in modo lazy? – zerkms

+0

Tentativo di testare la logica invocata Carica quando le condizioni sono soddisfatte e ignora il carico altrimenti – DSY

risposta

5

A meno che non si desideri utilizzare TypeMock Isolator o Moles occorrerà nascondere il metodo Load dietro un'interfaccia e inserirlo nella classe. Non c'è modo di aggirarlo, ma non lo farai solo per motivi di testabilità. Di solito tendi anche a ottenere una migliore separazione delle preoccupazioni da un tale refactoring.

Problemi correlati