Sono relativamente nuovo ai test unitari e ho una domanda su cosa / come dovrei provare un determinato metodo. Per il seguente metodo (psudo-c #) che ho creato (non un esempio di vita reale) per cosa testesti?
Inizialmente, i miei pensieri sarebbero di testare l'output con variazioni sul dizionario dei campi modulo, ad es. Valori validi, non validi, mancanti. Tuttavia, mi chiedo anche come testare per assicurarsi che i valori degli oggetti siano stati modificati al valore corretto e che sia stato tentato di inviare il messaggio di posta elettronica corretto (ovviamente entrambi i servizi potrebbero / potrebbero essere presi in giro).
Spero che ciò che sto chiedendo abbia senso, apprezzo che questa è una domanda soggettiva e le risposte potrebbero essere "dipende";)
public bool ProcessInput(Dictionary<string, string> formFields, ObjService objService, EmailService emailService)
{
try
{
// Get my object id
int objId;
if(!int.TryParse(formField["objId"], out objId)
{
return false;
}
// Update my object - would you validate the save against a DB or a mocked inmemory db?
var myObj = objService.Find(objId);
myObj.Name = formField["objName"];
objService.Save(myObj);
// Send an email - how would you test to make sure content, recipient, etc was correct?
emailService.SendEmail(formField("email"), "Hello World");
return true;
}
catch(Exception ex)
{
return false;
}
}