Drop MongoDB database before running Mocha test
solved by connect in another define.. not sure if ideal.
describe('Init', function() { before(function (done) { mongoose.connect('mongodb://localhost/db-test', function(){ mongoose.connection.db.dropDatabase(function(){ done() }) }) }) describe('Database', function() {
I implemented it a bit different.
- I removed all documents in the "before" hook - found it a lot faster than dropDatabase().
I used Promise.all() to make sure all documents were removed before exiting the hook.
beforeEach(function (done) { function clearDB() { var promises = [ Model1.remove().exec(), Model2.remove().exec(), Model3.remove().exec() ]; Promise.all(promises) .then(function () { done(); }) } if (mongoose.connection.readyState === 0) { mongoose.connect(config.dbUrl, function (err) { if (err) { throw err; } return clearDB(); }); } else { return clearDB(); }});