Truffle
如何設置塊前松露測試的超時?
我在私有鏈上執行我的測試,其中一些超時:
1) "before all" hook: Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
我嘗試根據 mocha 文件將超時設置為整個測試或之前的部分:
contract("looong tests", accounts => { this.timeout();
或者
before( done => { this.timeout(40000);
我收到了這個錯誤:
1) "before all" hook: TypeError: _this.timeout is not a function
添加 -t 命令行參數似乎沒有任何效果:
truffle test myTest.js -t 40000 truffle test myTest.js --timeout 40000
我在松露中看到一個舊的待定修復:https ://github.com/trufflesuite/truffle/issues/261
如何增加 before 語句的超時時間?
為單個測試案例添加超時有效,但不適用於 before 語句:(
it('one long test', () => { .... }).timeout(40000 );
編輯:我現在有一個解決方法,將程式碼從之前移動到我同步的第一個測試:
it('should go to before block but can't set timeout there', done => { new Promise( async function (resolve, reject) { // my before code resolve(); }).then( res => { done(); }); }).timeout(40000 );
將此添加到您的 Truffle 配置文件(
truffle.js
或truffle-config.js
)中:mocha: { enableTimeouts: false, before_timeout: 120000 // Here is 2min but can be whatever timeout is suitable for you. }
如果您想保留超時(甚至為不同的測試配置不同的超時),那麼只需按照此處的說明進行操作。
作為對 goodvibration 提供的答案的修正:將程式碼片段放在
truffle.js
. 對我來說,它只在module.exports
最高級別的內部工作(而不是在其他東西內部,例如networks
)。這對我有用:
module.exports = { mocha: { enableTimeouts: false } };