![見出し画像](https://assets.st-note.com/production/uploads/images/108386605/rectangle_large_type_2_8e1a0726a4ed5a869d078d5c4bfff0e3.png?width=800)
Photo by
wsd983320987
【完全保存版】AstarのWASMコントラクトにおける経過時刻のテストについて
今回は、経過時間のテストをどうやるのかについて書いていきます。
テスト環境では現在時刻がデフォルトで0なので、工夫が必要です。
1 set_block_timestamp関数について
これは、テストコード上で、タイムスタンプの設定を行えます。
![](https://assets.st-note.com/img/1686899893258-DSzw6RxEhG.png?width=800)
2 現在時刻の取得について
現在時刻の取得は「block_timestamp」関数で行えます。
しかし、テスト環境の場合は、0が返ります。
![](https://assets.st-note.com/img/1686900076120-cbP0gCurL7.png?width=800)
そのため、経過時間のテストを行うには工夫が必要です。
3 経過時間のテストについて
現在時刻が0で返ってくるため、これを利用してテストを行います。
下のように「set_block_timestamp」に61秒を設定しているのは、経過時間ではなく、現在時刻です。
つまり、標準時が始まってから61秒後の世界です。
![](https://assets.st-note.com/img/1686900757289-UAnQmRVRiR.png?width=800)
しかし、元々は現在時刻が0だったため(世界は始まったばかり)、61 - 0 = 61 で経過時間も同様に61秒となります。
そのため、block_timestampのデフォルトで0が返ってこようが、経過時間のテストを行うことが可能です。
今回は以上です。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊