Più appropriato per convalidare un parametro del filtro di dipendenza per mock + stub o per espressione compilare?

0

Il mio vantaggio è l'applicazione del TDD sul nostro progetto. Dice di seguire i principi di Zio Bob (Robert Martin) e SOLID. Una delle regole che rinforza è quella che io chiamo "la singola regola del dente" - non ci dovrebbe essere più di un ingranaggio nella catena implementata nel test dell'unità.

Abbiamo un componente che ha una dipendenza dal repository (IRepository). Abbiamo deriso il repository. Il componente che recupera dal repository passa un predicato per filtrare l'elenco di elementi da restituire. La mia implementazione ha restituito i dati stub da un repository (Moq) fittizio ed eseguito il predicato passato dal richiamo del componente per filtrare i dati dello stub e il test ha convalidato che il filtro ha ottenuto un ovvio requisito di filtraggio stubing un'implementazione sul repository fittizio e invocando l'implementazione del repository finto. Il mio lead ha bloccato questa implementazione e l'ha sostituita con un'invocazione di questo:

    protected static Expression<Func<T, bool>> RepositoryFilterVerification<T>(T entity)
    {
        return It.Is<Expression<Func<T, bool>>>(y => y.Compile().Invoke(entity));
    }

La sua preoccupazione è che eseguendo l'espressione stubando il mock e invocando il mock il test sta facendo troppo.

Mi stavo chiedendo cosa ne pensassero gli altri di questo.

EDIT : in precedenza avevo dichiarato di aver introdotto un'utility ExpressionVisitor di centinaia di righe che convalidava che l'espressione corrispondesse esplicitamente a un'espressione, ma si è scoperto che non lo stava usando per questo .

    
posta stimpy77 05.11.2014 - 20:17
fonte

1 risposta

1

Come ora lo descrivi, sono d'accordo con il tuo esempio. Quello di cui hai bisogno per testare il tuo metodo è che passa il predicato corretto al repository. Ciò che il repository fa con il predicato appartiene a un test dell'unità di repository.

    
risposta data 05.11.2014 - 22:02
fonte

Leggi altre domande sui tag