Attualmente sto lavorando a un progetto in cui sto ricevendo un oggetto tramite il servizio web (WSDL).
Il processo generale è il seguente:
Ricevi oggetto - > aggiungi / elimina / aggiorna parti (o tutte) di esso - > e restituire l'oggetto con le modifiche apportate.
Il fatto è che a volte questi cambiamenti sono complicati e c'è qualche logica in gioco, altri database, altri servizi web, ecc. così per facilitare questo sto creando un oggetto personalizzato che riproduce quello originale ma ha alcune funzionalità avanzate per rendere le cose più facili.
Quindi sto provando ad avere questo processo:
Ricevi oggetto originale - > convertilo / copialo in oggetto personalizzato - > aggiungi / elimina / aggiorna - > converti / copialo nuovamente all'oggetto originale - > restituisce l'oggetto originale.
Esempio:
public class Row
{
public List<Field> Fields { get; set; }
public string RowId { get; set; }
public Row()
{
this.Fields = new List<Field>();
}
}
public class Field
{
public string Number { get; set; }
public string Value { get; set; }
}
Quindi, ad esempio, una delle "azioni" da eseguire su questo sarebbe trovare tutto Fields in un Row che corrisponda a Value uguale a qualcosa e aggiornarle con qualche altro valore.
Ho una classe CustomRow che rappresenta la classe Row , come posso rendere questa unità di classe controllabile? Devo creare un'interfaccia ICustomRow per deriderla nel test dell'unità?
Se una delle azioni consiste nel sommare tutto il Values nel Fields che ha un Number uguale a 10 , come questa funzione, come può progettare la classe personalizzata per facilitare i test unitari.
Funzione di esempio:
public int Sum(FieldNumber number)
{
return row.Fields.Where(x => x.FieldNumber.Equals(number)).Sum(x => x.FieldValue);
}
Mi sto avvicinando a questo nel modo sbagliato?