TIPS #3 Unit Test Fake Data with Bogus

TIPS #3 Unit Test Fake Data with Bogus

Unit Test

Uno dei problemi quando si scrive una UT è quello di lavorare con dei dati fake, simulare accessi ai database etc.. un package comodo che ci viene in aiuto per generare fake data da dare in pasto alle nostre UT è sicuramente Bogus.

Scaricabile oltre che da nuget anche dal suo repository GitHub : Bogus

Prendiamo ad esempio un progetto che contiene una classe Entity Framework, alla classe aggiungiamo un contesto per gestire un db in memoria. Il db in memoria ci permette di poter lavorare con insert di dati fake:

Creiamo la nostra UT che testerà un metodo che recupera la lista utenti. Sarà pressochè così:

Creiamo i nostri dati fake aggiungendo il generatore di Bogus al costruttore del reposity in esame Users:

Bogus ci mette a disposizione la classe Faker a cui mappiamo la nostra entity nel nostro caso User, mappati i nostri dati procediamo tramite il metodo Generate alla generazione dei dati nell’esempio 1000 record.

Lanciando la nostra UT abbiamo in nostri 1000 record da testare:

E’ possibile localizzare la lingua semplicamente aggiungendo all’inizializzazione del costruttore il local code Esempio:

var faker = new Faker("en");

Tabella Local Code

Locale CodeLanguageLocale CodeLanguage
af_ZAAfrikaansfr_CHFrench (Switzerland)
arArabicgeGeorgian
azAzerbaijanihrHrvatski
czCzechid_IDIndonesia
deGermanitItalian
de_ATGerman (Austria)jaJapanese
de_CHGerman (Switzerland)koKorean
elGreeklvLatvian
enEnglishnb_NONorwegian
en_AUEnglish (Australia)neNepalese
en_AU_ockerEnglish (Australia Ocker)nlDutch
en_BORKEnglish (Bork)nl_BEDutch (Belgium)
en_CAEnglish (Canada)plPolish
en_GBEnglish (Great Britain)pt_BRPortuguese (Brazil)
en_IEEnglish (Ireland)pt_PTPortuguese (Portugal)
en_INDEnglish (India)roRomanian
en_NGNigeria (English)ruRussian
en_USEnglish (United States)skSlovakian
en_ZAEnglish (South Africa)svSwedish
esSpanishtrTurkish
es_MXSpanish (Mexico)ukUkrainian
faFarsiviVietnamese
fiFinnishzh_CNChinese
frFrenchzh_TWChinese (Taiwan)
fr_CAFrench (Canada)zu_ZAZulu (South Africa)

Comunitity Extension

Esistono una serie di interessanti extension da usare con Bogus una molto interessante è BogusSQL che permette di generare script SQL per insert su DB

BogusSQL

Conclusioni

Questa è solo una base di partenza, ovviamente alla nostra classe EF occorre aggiungere una parametrizzazione per gestire il db in memory per poterla utilizzare con le UT. Bogus offre svariate casi d’uso e con le extension della comunity oltre a quelle a pagamento è uno strumento che ogni sviluppatore e azienda dovrebbe avere a corredo per lo sviluppo del software.

Enjoy =)

Don’t Accept the Defaults - Abel Wang

comments powered by Disqus

Related Posts

Backstage Spotify - building developer portals

Backstage Spotify - building developer portals

Mi è capitato nella mia lunga carriera (30 anni) di lavorare per diverse aziende, ma trovarne una che aveva un’adeguata documentazione sugli standard per sviluppare è stato pura utopia.

Read More
Gestiamo i secrets di HashiCorp Vault con HashiCorp Terraform

Gestiamo i secrets di HashiCorp Vault con HashiCorp Terraform

Terraform, non solo IaC (Infrastructure as Code), chi usa terraform per gestire IaC ne conosce la potenza e la comodità una volta creato lo script per il deploy di una infrastruttura sul cloud e on-prem questo è replicabile all’infinito in diversi ambienti e modificabile per gestire lo scaling ad esempio o semplicamente cambiare le caratteristiche di una infrastruttura in meniera semplice e veloce.

Read More
TIPS #5 Scan NuGet Packages for Security Vulnerabilities

TIPS #5 Scan NuGet Packages for Security Vulnerabilities

NUGET Scan dei Packages per vulnerabilità di sicurezza Nell’era dove la sicurezza è il core principale, non può mancare un controllo sui packeges nuget che referenziamo alle nostre solution.

Read More