Generazione di dati fake durante la scrittura di test.

Spessissimo, quando mi trovo a dover scrivere dei test, ho la necessità di creare delle istanze di classi contenenti dei dati finti, in modo da verificarne il corretto funzionamento.

Di fatto, se proviamo ad immaginare di dover testare un metodo ForEach per una classe IEnumerable(vedi qui), sicuramente nel test dobbiamo creare una lista contente gli elementi da iterare.
Anche se semplice, la creazione di un set di informazioni finte, anche tramite classi “helper”, può risultare una fase noiosa e ripetitiva.
Grazie ad un consiglio di Fabio ho provato questo framework, che ci aiuta tantissimo nella creazione di liste - ma anche di singole istanze - con dati fake.

Il funzionamento è piuttosto banale ed intuitivo: di fatto si ha una composizione fluent che ci permette di coprire i principali scenari.

Per capire il suo potenziale provate ad immaginare di dover creare una lista di 10 elementi…con NBuilder si può ottenere lo stesso risultato con una sola riga di codice! J

var posts = Builder<Post>.CreateListOfSize(10).Build();


Ovviamente si possono specificare anche criteri un po’ più “strong”, forzando il valore di una specifica proprietà o addirittura alternando un valore all’interno della lista.

var posts = Builder<Post>.CreateListOfSize(10)
                .WhereAll()
                .Have(p => p.Username = "imperugo")
                .Build();

Un'altra feature che trovo interessantissima è la possibilità di persistere l’oggetto su di un nostro repository, quindi invocare un metodo passando il dato creato. Chi scrive integration test troverà sicuramente questa feature molto vantaggiosa.

//Definisco il servizio di persistenza da invocare
BuilderSetup.SetCreatePeristenceMethod<Post> (postService.SaveOrUpdate);

//Persisto l'oggetto fake
Builder<Post>.CreateNew().Persist();

Ovviamente il framework offre numerosissime altre features, che trovate qui.

Direi un must.

Enjoy it.


Comments