見出し画像

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

今回は以上です。

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