【完全保存版】AstarのWASMコントラクトでテストコードを書いてみよう!
0 はじめに
今回は、WASMのコントラクトのテストケースを作ってみましょう。
下の2つの関数に対するテストを行います。
① set_your_apple関数(その名の通り、リンゴをセットする)
② get_your_apple関数(その名の通り、リンゴをセットする)
1 #[cfg(test)]について
テストはこちらの#[cfg(test)]で作成していきます。
これにより、テスト環境でのみコンパイルされます。
2 testsモジュールについて
下のようにして、モジュールを作ります。
単体テストをグループ化しています。
3 use super::*について
「user super::*」によって、親モジュールから全ての公開(pub)アイテムをインポートします。
今回の構造は下のようになっているため、親モジュールは「my_psp34_mintable」です。
ここからインポートしています。
4 #[ink::test]について
テストコードを書くとき、関数の上に書きます。
5 インスタンスの生成について
下の部分で、コントラクトのインスタンスを生成しています。
コードを見ると、メインの「Contract」が「pub」になっています。
そのため、3章で出てきた、「use super::*」でインポートされています。
そして、下の実装箇所を見ると、new関数があることが確認できました。
ちなみに、中身も少し見てみましょう。
「Self」は現在実装している型である、「Contract」を示しています。
default()はその名の通り、デフォルト値を設定しています。
これは#[derive(Default)]でデフォルトトレイトを実装しているため、使用できます。
6 アカウントの作成について
次は、アカウントの作成についてです。
from関数を使って、型の変換を行っています。
次に、[0x0; 32]を見てみましょう。
これは、32バイト全てが「0x0」であるバイト配列です。
つまり下のようになります。(「0x0」と「0x00」は同じです。)
このバイト配列をAccountId型に変換しています。
これにより、全てが0のアカウントIDがつくられます。
7 assert_eq!について
「assert_eq!」は二つの引数を比較します。
ちなみに、比較を行うには、2つの値が「PartialEq」 トレイトを実装している必要があります。
「get_your_apple」関数を見ると、下のように「u16」型を返しています。
この型が「PartialEq」トレイトを実装しているため、比較を行うことができます。
今回は以上です。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊