我无法运行多个Supertest / Mocha测试,因为我收到错误Error: Trying to open unclosed connection.
- 我发现这个post建议循环并检查连接状态。想知道是否有更好的方法?也许是最近在Supertest中添加的东西来处理这个问题。
答案 0 :(得分:2)
在您的Mocha测试中添加before
函数以连接到MongoDB,如此
var mongoose = require('mongoose');
describe('My test', function() {
before(function(done) {
if (mongoose.connection.db) return done();
mongoose.connect('mongodb://localhost/puan_test', done);
});
});
答案 1 :(得分:0)
好的 - 非常接近。我要做的就是删除describe方法调用并将一个before()调用放在一个公共文件中,用于所有测试 - 超级或直接mocha单元测试。
var db;
// Once before all tests - Supertest will have a connection from the app already while others may not
before(function(done) {
if (mongoose.connection.db) {
db = mongoose.connection;
return done();
}
db = mongoose.connect(config.db, done);
});
// and if I wanted to load fixtures before each test
beforeEach(function (done) {
fixtures.load(data, db, function(err) {
if (err) throw (err);
done();
})
});
通过省略describe()调用上面的内容,它可以用于所有测试。
答案 2 :(得分:0)
// Also you can use the 'open' event to call the 'done' callback
// inside the 'before' Mocha hook.
before((done) => {
mongoose.connect('mongodb://localhost/test_db');
mongoose.connection
.once('open', () => {
done();
})
.on('error', (err) => {
console.warn('Problem connecting to mongo: ', error);
done();
});
});