摩卡单元测试涉及knex事务

时间:2016-07-29 18:14:01

标签: javascript node.js mocha knex.js

我有以下单元测试

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())

1 个答案:

答案 0 :(得分:-1)

这可能不是问题的根源,但您可以通过在运行--timeout 15000命令进行测试时添加标记mocha来增加默认超时,或者更理想地在{{1配置文件;用你喜欢的任何毫秒数(这可以设置为15000或15秒。来自the docs

  

-t, - timeout

     

指定测试用例超时,默认为2秒。要覆盖   你可以以毫秒为单位传递超时,或者带​​有s后缀的值,例如:--timeout 2s或--timeout 2000将是等效的。