2016-07-29 45 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.