Testing

增加 Ganache 的區塊數

  • January 3, 2022

我們如何在 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-helperspackage。該庫包含用於測試智能合約的各種助手,包括增加塊數或時間戳的方法,例如:

async time.advanceBlock()
async time.increase(duration)
async time.increaseTo(target)

我自己沒有使用過這個庫,但聽起來它可能對你有用。

引用自:https://ethereum.stackexchange.com/questions/70621