
【完全保存版】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」トレイトを実装しているため、比較を行うことができます。

今回は以上です。
いいなと思ったら応援しよう!
