Hardhat入門⑤-1(コントラクトのテスト) ~ブロックチェーンエンジニアになろう~
今日もHardhatの公式に沿ってやっていきますね。
まず、テストにはMochaというものを使います。
あまり意識することはないかもですが、詰まった時には検索などで利用してみてください。
そもそも、なぜテストが必要なのか。
それはコントラクトのデプロイなどにガス代(お金)がかかるからです。
だからこそ、事前にしっかりとテストを行い、問題ないとわかった上でデプロイを行いましょう。
まずはテスト用のファイルを作りましょう。
「test」フォルダに「Token.js」というファイルを入れてください。
そして、そのファイルに以下をコピペしてください(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
こんな風になれば成功です。
ざっくりと見てきましたが、少し長くなってしまいそうですので、続きは次回にします。
いいなと思ったら応援しよう!
サポートをしていただけたらすごく嬉しいです😄
いただけたサポートを励みに、これからもコツコツ頑張っていきます😊