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?