3

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();
}
});

マイケル

4

2 に答える 2

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();
    });
}); 
于 2012-12-21T01:11:35.737 に答える
0

の閉鎖(中)にcb関数を呼び出す必要があります:dbtearDown

tearDown: function(cb) {

    // ...
    // connection code
    // ...

    db.collection('myCollection', function(err, collectionitems) {
        // upon cleanup of all test objects
        db.close(cb);
    });
}

これは私にとってはうまくいきます。

于 2014-09-10T07:55:33.873 に答える