TDD - Esecuzione di asserzioni sugli alberi di espressione C #

1

Come testare unitamente il metodo PerformUpdate nell'esempio qui sotto? Questa è una versione (molto) semplificata di un codice che esegue aggiornamenti su un database in cui lo schema è dinamico e rappresentato dalla raccolta dei campi.

EDIT: Se non è chiaro cosa sto chiedendo, mi piacerebbe sapere come diversi sviluppatori si avvicinerebbero al test \ mocking di questo codice da una prospettiva TDD. Ad esempio, quali test scriveresti, cosa vorresti prendere in giro, come verificherai le chiamate ai metodi con gli argomenti giusti?

public interface IUnitOfWork
{
    IEfRepository<Field> Fields { get; }
}

public class UpdateService
{
    private IUnitOfWork unitOfWork;

    private IDataUpdater dataService;

    public Activity PerformUpdate(App app, IDictionary<string, object> data)
    {
        var fields = this.unitOfWork.Fields.FindWhere(o => o.App.Identifier == app.Identifier);
        var activity = this.dataService.PerformUpdate(fields, data);

        return activity;
    }
}
    
posta beyond-code 20.01.2014 - 12:11
fonte

2 risposte

2

Ci sono alcune parti differenti da testare qui. In definitiva la mia risposta è la stessa indipendentemente dalla porzione specifica del codice. La validità del metodo di ciascuna entità deve essere testata separatamente in base alle proprie preoccupazioni (sono sicuro che lo farai comunque).

In termini di test, diciamo il metodo PerformUpdate , la tua migliore scommessa qui è di simulare / stub sia IUnitOfWork che IDataUpdater . In ogni caso il mock / stub farebbe una supposizione (dati buoni e dati cattivi). Basta interrogarli dopo essere stati chiamati per confermare la validità della chiamata.

    
risposta data 20.01.2014 - 12:45
fonte
1

Ecco una risposta inutile per te :)

Probabilmente non lo testerei unitamente, e creerei un test a livello di componente più comportamentale con alcuni Fake complessi.

Mi chiedo come testare una particolare implementazione mi sembra un odore - dovresti chiedere "come svilupperei un'implementazione per soddisfare questo requisito?"

    
risposta data 20.01.2014 - 12:50
fonte

Leggi altre domande sui tag