Questa è probabilmente una domanda dannatamente stupida, per la quale mi scuso, ma non riesco a trovare la sintassi di google giusta per trovare una risposta.
Immagina una proprietà, come questa:
private int _type
public int Type
{
get { return _type; }
set
{
_type = value;
//raise an event in your chosen language or tech
CallAFunction();
}
}
Ora, immagina che CallAFunction faccia una sorta di sollevamento pesante abbastanza serio nella tua applicazione, interagendo con il database tramite un repository.
Non sembra irragionevole volere un test unitario per questo, per essere assolutamente sicuro che Type sia impostato su qualunque cosa tu abbia inserito e per verificare che così facendo si solleva l'evento previsto.
Tuttavia, l'impostazione della proprietà con un test chiamerà CallAFunction (), il che significa che non stai più testando realmente una "unità" di codice in quanto tale, e forse ancora più importante che un test molto semplice per questa proprietà molto semplice potrebbe richiede una preparazione più elaborata, incluso il beffardo del deposito, che sembra un enorme eccesso.
In alcuni casi è possibile suddividerli separando l'attivazione di CallAFunction tramite l'evento. Ma non è sempre il caso (sto usando WPF, e gli eventi risalgono a XAML non testabile).
Qual è il modo migliore per dividere queste due cose interdipendenti?