我正在为mongodb周围的操作编写nodeunit测试。当我使用nodeunit(nodeunit testname.js)执行我的测试时,测试运行并变为绿色,但nodeunit命令行不返回(我需要点击ctrl-c)。
我做错了什么?我是否需要关闭数据库连接或服务器或我的测试错误?
这是一个缩减样本测试。
process.env.NODE_ENV = 'test';
var testCase = require('/usr/local/share/npm/lib/node_modules/nodeunit').testCase;
exports.groupOne = testCase({
tearDown: function groupOneTearDown(cb) {
var mongo = require('mongodb'), DBServer = mongo.Server, Db = mongo.Db;
var dbServer = new DBServer('localhost', 27017, {auto_reconnect: true});
var db = new Db('myDB', dbServer, {safe:false});
db.collection('myCollection', function(err, collectionitems) {
collectionitems.remove({Id:'test'}); //cleanup any test objects
});
cb();
},
aTest: function(Assert){
Assert.strictEqual(true,true,'all is well');
Assert.done();
}
});
迈克尔
答案 0 :(得分:2)
关闭连接后,请尝试将cb()
置于remove()
回调中:
var db = new Db('myDB', dbServer, {safe:false});
db.collection('myCollection', function(err, collectionitems) {
collectionitems.remove({Id:'test'}, function(err, num) {
db.close();
cb();
});
});
答案 1 :(得分:0)
在cb
关闭后(db
期间),你需要调用tearDown
函数:
tearDown: function(cb) {
// ...
// connection code
// ...
db.collection('myCollection', function(err, collectionitems) {
// upon cleanup of all test objects
db.close(cb);
});
}
这适合我。