我想为异步数据库调用编写单元测试。我正在使用NodeJS与ORMnomnom安装的包作为orm db访问和nodeunit进行单元测试。 但它挂在这个简单的测试:Nodeunit测试挂起为异步数据库调用ORMnomnom
下面是测试代码\ test1.js
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();
};
当我运行这个测试的所有断言过去了,我看到我的消息在控制台:“测试数据库”“测试必须在这里完成!' 'testSomething'(意味着test.done()在回调函数内到达),但测试没有完成。我需要手动停止它,得到:'处理完成退出代码1'。如果我更改为test.ok(false,“”),所以我得到AssertionError但测试没有完成。如果我删除'测试数据库',只留下testSomething函数 - 测试按预期完成,所有断言都通过了。
我也试试testpilot这是基于nodeunit的包。 它给出
test1
FAIL : test db
an error occurred during test:
Error: timed out waiting for test
有什么建议吗? 谢谢。
重命名“测试数据库”的东西没有空格字符,它应该工作 – srquinn
@jibsales,我试过没有空格,相同,所有测试仍然处于挂起状态。 – fresh
尝试用setTimeout()替换异步数据库调用,以确保ORM不挂在连接上或其他背景中,以防止该过程正常退出。 – srquinn