È abbastanza facile creare test unitari per blocchi condizionali che seguono il percorso previsto, ma a volte può essere difficile elaborare dati per sorgenti / oggetti che non controllo direttamente (database che non desidero modificare o accedere, variabili ambientali, ecc.) senza modificare il codice sorgente per aggiungere la logica di debug (usando solo i test unitari come funzioni . Come si costruiscono i test unitari per testare i seguenti blocchi di controllo specificati?
function(int x)
{
if(x > 10)
{
if(system.day() == "Monday")
print "Monday"
else
// TEST THIS SPACE (BUT ON A MONDAY :)
print "Not Monday"
}
else
{
....
}
}
Nella funzione precedente, posso scrivere una funzione e passare qualsiasi valore che mi piace in x, ma come posso testare il condizionale annidato che si basa su una chiamata System.date () che non posso modificare (facilmente)?
Un altro esempio che utilizza database che non controllo e non posso accedere:
function(int x)
{
try
{
if(x > 10)
{
query_result = database.query()
if(query_results != NULL)
{
print "QUERY NOT NULL"
}
else
{
// TEST THIS SPACE
print "QUERY IS NULL"
}
}
}
}
Ovviamente, se passassi la query, potrei controllarla, ma in questo caso non posso. Questi sono esempi semplici e forzati, per favore espandi questi casi particolari e tutti gli scenari correlati che potrei non aver considerato.