Limpiando la base de datos de prueba antes de ejecutar pruebas

¿Cuál es la mejor manera de limpiar una base de datos antes de ejecutar un conjunto de pruebas (hay una biblioteca npm o un método recomendado para hacer esto)?

Sé sobre la función before ().

Estoy usando node / express, mocha y secuela.

La función before es tan buena como la que harás para limpiar tu base de datos. Si solo necesita limpiar la base de datos una vez, es decir, antes de ejecutar todas sus pruebas, puede tener una función global before en un archivo separado

globalBefore.js

 before(function(done) { // remove database data here done() }) 

single-test-1.js

 require('./globalBefore) // actual test 1 here 

single-test-2.js

 require('./globalBefore) // actual test 2 here 

Tenga en cuenta que globalBefore solo se ejecutará una vez aunque se haya requerido dos veces

Principios de prueba

Intente limitar el uso de dependencias externas como las bases de datos en sus pruebas. Cuantas menos dependencias externas más fáciles sean las pruebas. Desea poder ejecutar todas sus pruebas de unidad en paralelo y un recurso compartido, como una base de datos, lo hace difícil.

Eche un vistazo a esta charla de Google Tech sobre cómo escribir javascript comprobable http://www.youtube.com/watch?v=JjqKQ8ezwKQ

También eche un vistazo al módulo rewire . Funciona bastante bien para apagar funciones.

Normalmente lo hago así (por ejemplo, para un modelo de User ):

 describe('User', function() { before(function(done) { User.sync({ force : true }) // drops table and re-creates it .success(function() { done(null); }) .error(function(error) { done(error); }); }); describe('#create', function() { ... }); }); 

También hay sequelize.sync({force: true}) que eliminará y volverá a crear todas las tablas ( .sync() se describe aquí ).

Hice esta biblioteca para limpiar e importar accesorios para tu prueba.

De esta manera, puede importar accesorios, probar y luego limpiar su base de datos.

Echa un vistazo a lo siguiente:

 before(function (done) { prepare.start(['people'], function () { done(); }); }); after(function () { prepare.end(); }); 

https://github.com/diogolmenezes/test_prepare