見出し画像

【完全保存版】AstarのWASMコントラクトにおける経過時刻のテストについて

今回は、経過時間のテストをどうやるのかについて書いていきます。

テスト環境では現在時刻デフォルトで0なので、工夫が必要です。

1 set_block_timestamp関数について

これは、テストコード上で、タイムスタンプの設定を行えます。

参考:https://paritytech.github.io/ink/ink_env/test/fn.set_block_timestamp.html

2 現在時刻の取得について

現在時刻の取得は「block_timestamp」関数で行えます。

しかし、テスト環境の場合は、0が返ります。

そのため、経過時間のテストを行うには工夫が必要です。

3 経過時間のテストについて

現在時刻が0で返ってくるため、これを利用してテストを行います。

下のように「set_block_timestamp」61秒を設定しているのは、経過時間ではなく、現在時刻です。

つまり、標準時が始まってから61秒後の世界です。

なお、すぐ上で1秒を設定しているのは、タイムスタンプが0だとエラーになる仕様のためです。

しかし、元々は現在時刻が0だったため(世界は始まったばかり)、61 - 0 = 61 で経過時間も同様に61秒となります。

そのため、block_timestampのデフォルトで0が返ってこようが、経過時間のテストを行うことが可能です。

今回は以上です。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊