2016-07-29 80 views
0

我有下面的单元测试摩卡单元测试涉及knex交易

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)“每个钩子之后......”错误:超过2000ms的超时。确保在此测试中正在调用done()回调。

如何防止第二次失败信息。

我可以把尝试赶上周围像下面,但does not看起来整洁

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

这可能不是问题的根源,但你可以通过在运行添加标志--timeout 15000增加默认超时要测试的mocha命令,或者更理想的配置文件mocha.opts;无论你喜欢什么毫秒数(这将它设置为15000或15秒)。从the docs

-t, --timeout

Specifies the test-case timeout, defaulting to 2 seconds. To override you may pass the timeout in milliseconds, or a value with the s suffix, ex: --timeout 2s or --timeout 2000 would be equivalent.