- Published on
hardhatでtimeに依存するロジックをテストするやり方
hardhatで時間に依存したロジックをテストするやり方を紹介します。
やり方はとても簡単で、下記のようにevm_increaseTime
で時間を進めて、evm_mine
するだけです。
const { ethers } = require('hardhat'); const twoDays = 2 * 24 * 60 * 60; await ethers.provider.send('evm_increaseTime', [twoDays]); await ethers.provider.send('evm_mine');
また、このままだと時間が2日ずれたままになるので、時間を戻さないと他のテストが落ちてしまうことがあります。そこで、進めた日数分 - (マイナス)
の値を入れることで、時間を戻すことができます。
const { ethers } = require('hardhat'); const twoDays = 2 * 24 * 60 * 60; await ethers.provider.send('evm_increaseTime', [twoDays]); await ethers.provider.send('evm_mine'); // expect( some test ).to.eq( test) テストを行う // テストが終わったら、時間を戻す await ethers.provider.send('evm_increaseTime', [- twoDays]); await ethers.provider.send('evm_mine');