見出し画像

Hardhat入門⑤-1(コントラクトのテスト) ~ブロックチェーンエンジニアになろう~

今日もHardhatの公式に沿ってやっていきますね。

まず、テストにはMochaというものを使います。

あまり意識することはないかもですが、詰まった時には検索などで利用してみてください。

そもそも、なぜテストが必要なのか。

それはコントラクトのデプロイなどにガス代(お金)がかかるからです。

だからこそ、事前にしっかりとテストを行い、問題ないとわかった上でデプロイを行いましょう。

まずはテスト用のファイルを作りましょう。

「test」フォルダに「Token.js」というファイルを入れてください。

スクリーンショット 2021-12-08 6.54.47


そして、そのファイルに以下をコピペしてください(Hardhatの公式そのままです。)

const { expect } = require("chai");

describe("Token contract", function () {
 
 it("Deployment should assign the total supply of tokens to the owner", async function () {
   const [owner] = await ethers.getSigners();
   const Token = await ethers.getContractFactory("Token");
   const hardhatToken = await Token.deploy();
   const ownerBalance = await hardhatToken.balanceOf(owner.address);
   
   expect(await hardhatToken.totalSupply()).to.equal(ownerBalance);
 
 });

});

ここもざっくりと。

まず一番上の

const { expect } = require("chai");

の部分でchaiというものを使うことを宣言しています。

実はこちら、第3章ですでにimport済みです。

describe("○○", function () {
 
 it("○○", async function () {
   
   あーだこーだ(awaitが入っている)
 
 });

});

このdescribe, it の中で実際にテストする項目を書いています。

ちなみにダブルクオーテーションで囲まれた部分はただの説明文が入ります。

そして、大事だと思うのがasync awaitです。

ここはいわゆる非同期処理と呼ばれるところですが、ここでは説明は割愛します。

このasyncとawaitは対となっており、ブロックチェーン関連の処理をする時によく使われます。

そして、

expect(await hardhatToken.totalSupply()).to.equal(ownerBalance);

この部分が実際にテストを行なっている箇所です。

ここでは

①await hardhatToken.totalSupply()
②ownerBalance

が同じかどうかをテストしています。

ターミナルでこちらのコマンドを売ってください。

npx hardhat test

こんな風になれば成功です。

スクリーンショット 2021-12-08 7.18.59


ざっくりと見てきましたが、少し長くなってしまいそうですので、続きは次回にします。

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