如果我尝试使用after
删除数据库(在我的测试结束时)它可以工作。
如果我尝试以下方法:
var db = mongoose.connect('mongodb://localhost/db-test')
describe('Database', function() {
before(function (done) {
db.connection.db.dropDatabase(function(){
done()
})
})
...
它不会丢弃数据库。到底是怎么回事?我宁愿在开始测试之前删除db - 所以在测试之后我可以探索db。
答案 0 :(得分:11)
通过另一个定义连接解决..不确定是否理想。
describe('Init', function() {
before(function (done) {
mongoose.connect('mongodb://localhost/db-test', function(){
mongoose.connection.db.dropDatabase(function(){
done()
})
})
})
describe('Database', function() {
答案 1 :(得分:4)
我实施的有点不同。
我使用Promise.all()确保在退出钩子之前删除了所有文档。
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();
}
});