我有以下单元测试
knex.transaction(function(trx) {
wrapperobj.insertData(trx, (err, res) => {
if (err) {
return done(err);
}
expect(result.rowCount).to.be.equal(2); //fails, rowcount is 1
trx.rollback(new Error('rollback'));
})
})
.asCallback((err, result) = > {
expect(err).to.match(/rollback/);
done();
});
它打印2个失败 1)未捕获的AssertionError:预期1等于2.这是预期的。 2)"每次"挂钩...错误:超过2000毫秒的超时。确保在此测试中调用done()回调。
如何阻止第二次失败消息。
我可以像下面一样尝试捕捉,但看起来不整洁
knex.transaction(function(trx) {
wrapperobj.insertData(trx, (err, res) => {
try {
expect(err).to.be.null;
expect(result).not.to.be.empty;
expect(result.rowCount).to.be.equal(2);
}
catch(err1) {
done(err1);
}
trx.rollback(new Error('rollback'));
})
.asCallback((err, result) => done())
答案 0 :(得分:-1)
这可能不是问题的根源,但您可以通过在运行--timeout 15000
命令进行测试时添加标记mocha
来增加默认超时,或者更理想地在{{1配置文件;用你喜欢的任何毫秒数(这可以设置为15000或15秒。来自the docs:
-t, - timeout
指定测试用例超时,默认为2秒。要覆盖 你可以以毫秒为单位传递超时,或者带有s后缀的值,例如:--timeout 2s或--timeout 2000将是等效的。