Testing
增加 Ganache 的區塊數
我們如何在 Ganache 上增加 block.number 以進行測試?如果不可能,您是否知道另一種方法,例如傳遞 X 個虛假交易來人為地增加 block.number。
或者如果我們必須使用私有鏈:是否可以更改塊之間的時間以加快測試速度?
最好的祝福
您可以增加
block.timestamp
(又名now
):web3.currentProvider.send({method: "evm_increaseTime", params: [numOfSeconds]});
請注意,此方法是標準的 Ganache 擴展。
所以不要指望它在其他節點類型(Geth、Parity 等)上。
另請注意,上面的程式碼對 web3.js v0.x 有效。
您可能需要在 web3.js v1.x 中非同步執行它。
除了 goodvibration 的回答,OpenZeppelin 最近發布了他們的
openzeppelin-test-helpers
package。該庫包含用於測試智能合約的各種助手,包括增加塊數或時間戳的方法,例如:async time.advanceBlock() async time.increase(duration) async time.increaseTo(target)
我自己沒有使用過這個庫,但聽起來它可能對你有用。