【问题标题】:Mocha Unit test involving knex transaction涉及 knex 交易的 Mocha 单元测试
【发布时间】:2016-07-29 18:14:01
【问题描述】:

我有以下单元测试

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() 回调。

如何防止出现第二条失败消息。

我可以像下面这样放 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())

【问题讨论】:

    标签: javascript node.js mocha.js knex.js


    【解决方案1】:

    这可能不是问题的根源,但是您可以通过在运行mocha 命令进行测试时添加标志--timeout 15000 来增加默认超时时间,或者更理想的是在mocha.opts 配置文件中;任意毫秒数(设置为 15000 或 15 秒。来自the docs

    -t,--超时

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

    【讨论】:

      猜你喜欢
      • 2013-05-27
      • 1970-01-01
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 2021-03-02
      相关资源
      最近更新 更多