MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Unit test con MongoDB

Tecnicamente i test che parlano a un database (nosql o altro) non sono unit test, poiché i test verificano le interazioni con un sistema esterno e non solo un'unità di codice isolata. Tuttavia i test che dialogano con un database sono spesso estremamente utili e spesso abbastanza veloci da essere eseguiti con gli altri unit test.

Di solito ho un'interfaccia Service (es. UserService) che racchiude tutta la logica per gestire il database. Il codice che si basa su UserService può utilizzare una versione simulata di UserService ed è facilmente verificabile.

Durante il test dell'implementazione del servizio che comunica con Mongo, (ad es. MongoUserService) è più semplice scrivere del codice java che avvierà/fermerà un processo mongo sulla macchina locale e fare in modo che MongoUserService si connetta a quello, vedi questa domanda per alcuni Appunti.

Potresti provare a deridere la funzionalità del database durante il test di MongoUserService, ma in genere è troppo soggetto a errori e non verifica ciò che vuoi veramente testare, che è l'interazione con un database reale. Pertanto, quando si scrivono i test per MongoUserService, si imposta uno stato del database per ogni test. Guarda DbUnit per un esempio di un framework per farlo con un database.