涉及knex交易的Mocha单元测试
Mocha Unit test involving knex transaction
我有下面的单元测试
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) 未捕获断言错误:应为1等于2。这是意料之中的事。2) "每个之后"挂钩。。。错误:超过了2000ms的超时时间。请确保在该测试中调用了done()回调。
如何防止第二条失败消息
我可以像下面这样到处放try-catch,但看起来不整洁
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())
这可能不是问题的根源,但您可以通过在运行mocha
命令进行测试时添加标志--timeout 15000
来增加默认超时,更理想的情况是在mocha.opts
配置文件中添加标志;用你喜欢的毫秒数(这将其设置为15000或15秒。来自文档:
-t、 --超时
指定测试用例超时,默认为2秒。覆盖您可以以毫秒为单位传递超时,或者一个后缀为s的值,例如:--timeout 2s或--timeout 2000将是等效的。
相关文章:
- 我的单元测试选项是什么
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何用mocha和rewire模拟node.js单元测试中的Q方法
- 单元测试节点模块与mocha,模块变量行为怪异
- 使用 Mocha 和 Sinonjs 进行的第一个异步单元测试
- Mocha单元测试路线返回200 ok
- 包括mocha单元测试中的模块
- 如何使用jasmine或mocha对接收参数的javascript函数进行单元测试
- 什么'这个异步JavaScript函数的单元测试是错误的(通过Mocha/Sinon)
- 如何使用Mocha Chai组织用于单元测试BDD的代码
- 如何使用Mocha在Karma中为Javascript单元测试加载HTML固定装置
- 如何用mocha.js模拟依赖类进行单元测试
- 用mocha对react组件进行单元测试
- 使用Mocha和Momentjs进行单元测试
- 单元测试一个AngularJS指令控制器(Karma, Chai, Mocha)
- Mocha单元测试错误处理库
- Mocha运行rendr集合ajax单元测试
- 涉及knex交易的Mocha单元测试
- 单元测试 - 如何使用 mocha-phantomjs 测试返回 Promise 对象的 JavaScript 方法
- 使用Karma - done()运行的Mocha单元测试没有定义