2012-12-20 2 views
3

mongodb 주위의 작업에 대해 nodeunit 테스트를 작성 중입니다. nodeunit (nodeunit testname.js)을 사용하여 테스트를 실행하면 테스트가 실행되고 녹색으로 바뀌지 만 nodeunit 명령 줄은 반환되지 않습니다 (Ctrl-c를 눌러야 함).mongodb의 노드 노드 테스트가 완료되지 않는 이유는 무엇입니까?

내가 뭘 잘못하고 있니? db 연결 또는 서버를 닫아야합니까, 아니면 테스트가 잘못 되었습니까?

다음은 절단 샘플 테스트입니다.

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

이 문제도 발생합니다. MongoDB 연결은 전혀 닫히지 않는 것 같습니다. 이 문제가 더 이상 정보를 얻지 못 했습니까? – juriejan

답변

2

넣어보십시오 당신의 remove() 콜백 내에서 cb() 당신은 당신에게 연결을 닫은 후 :

당신은 후 db의 폐쇄를 cb 기능 를 호출 할 필요가
var db = new Db('myDB', dbServer, {safe:false}); 

db.collection('myCollection', function(err, collectionitems) { 
    collectionitems.remove({Id:'test'}, function(err, num) { 
     db.close(); 
     cb(); 
    }); 
}); 
+0

흠, 몇 가지 다른 변종을 시도해 보았습니다. –

+0

다른 코드가 실행되고 있습니까? 다른 연결을하고 있습니까? – theabraham

0

합니다 (tearDown 동안을) :

tearDown: function(cb) { 

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

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

나를 위해 작동합니다.

관련 문제