Remixでユニットテストを実行しよう!
本日は、Remixを使って、ユニットテストを実行してみます。
Remixはこちらからです。
1 プラグインを入れよう
まずは、プラグインを入れましょう。
こちらを選択します。
下のように検索すると、「SOLIDITY UNIT TESTING」が出てきます。
「Activate」を押して、有効にしましょう。
(下はすでに有効になっています。)
これでプラグインを入れることができました。
2 テストコードを利用しよう
では、用意されているサンプルのテストコードを使ってみましょう。
下のように選択します。
「ERC20」「Mintable」を選択した上で、「OK」を選択
このようになりました。
「MyToken.test.sol」を確認すると、テストコードが確認できます。
3 テストを実行してみよう
では、実際にテストを実行してみましょう。
「Test directory」は既に「MyToken.test.sol」が入っている「tests」ディレクトリになっています。
「Run」で実行します。
すると、下のようにテストを実行することができました。
4 テストの中身を見てみよう
では、具体的にテストの中身を見てみましょう。
1 TestsAccountsライブラリについて
下のように、「acc0」にアカウントが入っています。
「TestsAccounts」の部分を「Ctrl」キーを押しながら選択すると、下のように、「remix_accounts.sol」を開きました。
こちらの最初のアドレスを取得しています。
2 constructorの設定について
下のように、constructorで「acc0」を設定しています。
constructorはデプロイ時に一度だけ行われる処理です。
こちらが実際のコントラクトです。
このように、初期の所有者を入れています。
つまり、このテストでは、「acc0」が所有者です。
3 beforeAll関数について
次は、beforeAll関数を見てみましょう。
ここで、「acc1」~「acc4」にアカウントを入れています。
なお、beforeAll関数は全てのテスト前に一度実行される関数です。
次に実際のテストを見てみましょう。
4 Assertライブラリについて
「Assert.equal」を用いて、2つの値が等しいかを確認しています。
「Assert」を「ctrl」キーを押しながら選択すると、ライブラリを確認できます。
関数の中身はこのように確認することができます。
テストの結果を確認すると、関数名が緑色でチェックがついています。
これで、問題なく通ったことがわかります。
5 成功想定のテストについて
中身も少しみてみましょう。
コントラクトの所有者である「acc0」が自分自身に対して10,000のミントを行っています。
そして、「Assert.equal」でその値が問題なく10,000になっているかを確認しています。
下の「tetTotalSupply」では、総供給量が10,000になっているかを確認しています。
6 失敗想定のテストについて
次に、失敗を想定したテストを見てみましょう。
ここでは、特別なコメントである、「/// #sender: account-1」が使われています。
これにより、所有者でない「account-1」で実行されます。
そして、下の部分で、「account-1」が「acc0」に向けてミントを行おうとしています。
なお、mint関数は、下のように、「onlyOwner」という修飾子がついています。
そのため、所有者以外が行おうとすると、エラーになります。
結果、下のように、想定通り、エラーになったことを確認できました。
本日は以上です。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊