2012-06-08 5 views
2

async db 호출에 대한 단위 테스트를 작성하려고합니다. 나는 NodeJSORMnomnom 패키지를 orm db 액세스로 설치하고 유닛 테스트를 위해 노드 유닛을 사용하고 있습니다. 그러나이 간단한 테스트를 위해 정지 '테스트 DB를' '시험 :비동기 db 호출에 대한 노드 단위 테스트가 중단됨 ORMnomnom

여기

코드 테스트 \이

modelsdb = require('../model/model_db') 

exports['test db'] = function (test) { 
    test.expect(1); 
    console.log('test db'); 
    modelsdb.MyTable.objects.all(function (err, data) { 
    test.ok(true, "this assertion should pass"); 
    test.done(); 
    console.log('test must finish here!'); 
    }); 
} 

exports.testSomething = function(test){ 
    console.log('testSomething'); 
    test.expect(1); 
    test.ok(true, "this assertion should pass"); 
    test.done(); 
}; 

나는 모든 주장이 전달이 테스트를 실행하면, 내가 콘솔에서 내 메시지를 참조 test1.js입니다 여기서 끝내야 해! ' 'testSomething'(즉, test.done()이 콜백 함수 내에 있음을 의미 함) 테스트가 완료되지 않습니다. 수동으로 중지해야합니다. '프로세스가 종료 코드 1로 완료되었습니다.' test.ok (false, "")로 변경하면 AssertionError가 발생하지만 테스트가 완료되지 않습니다. 'test db'를 제거하고 testSomething 함수 만 남기면 테스트가 예상대로 완료되고 모든 어설 션이 통과됩니다.

또한 시험용 패키지를 시도하십시오.이 패키지는 노드 단위을 기반으로합니다. 이

test1 
    FAIL : test db 
     an error occurred during test: 
     Error: timed out waiting for test 

어떤 제안을 제공합니다? 감사합니다. .

+0

공백없이, 모든 테스트가 여전히 정지 상태가 된 후에도 동일합니다. – srquinn

+0

@jibsales 작동합니다, 내가 노력하고 이름 바꾸기

exports.tearDown = function (callback) { mongoose.disconnect(callback); }; 
fresh

+0

비동기 DB 호출을 setTimeout()으로 바꾸어 프로세스가 올바르게 종료되지 않게하는 ORM이 연결에 걸려 있지 않은지 확인하십시오. – srquinn

답변

0

나는 nodeunit 및 q/mongoose와 비슷한 문제가 있습니다. - bug이 열렸습니다. test.done()을 호출 한 후 끔찍한 시도를했는데 보류중인 모든 로깅은 플러시되지 않을 수 있으므로 이상적인 것은 아닙니다. 타임 아웃 블록에서 process.exit(0)으로 전화해야합니다.

2

수출에 tearDown 메서드를 추가하여 몽구스의 연결 풀을 닫습니다. 아직 열려있는 한 테스트는 종료되지 않습니다.

당신은 당신이 당신의 몽구스 연결을 여는있는 방법을 보여줍니다,하지만하지 않습니다 이런 식으로 뭔가 :

공백 문자없이 뭔가 "테스트 DB"하고
+1

더 나은 :'mongoose.disconnect (callback);' –

관련 문제