Ganache
使用 Hardhat 進行時間相關測試?
對於 Ganache,有幾種解決方案。
安全帽呢?他們實施了自己的本地區塊鏈 Hardhat Network,這與 Ganache 不同。
這裡有兩種相關的 RPC 方法:
evm_increaseTime
和evm_setNextBlockTimestamp
. 在這兩種情況下,它們都會影響下一個區塊,但不會開採一個。
evm_increaseTime
接收將添加到最新塊的時間戳的秒數。evm_setNextBlockTimestamp
接收一個絕對的 UNIX 時間戳(同樣,以秒為單位),因此它不受目前塊的影響。例子
evm_increaseTime
// suppose the current block has a timestamp of 01:00 PM await network.provider.send("evm_increaseTime", [3600]) await network.provider.send("evm_mine") // this one will have 02:00 PM as its timestamp
evm_setNextBlockTimestamp
await network.provider.send("evm_setNextBlockTimestamp", [1625097600]) await network.provider.send("evm_mine") // this one will have 2021-07-01 12:00 AM as its timestamp, no matter what the previous block has
請記住,Hardhat Network 會驗證新時間戳是否大於前一個時間戳,因此您無法發送任何值。