メインコンテンツへスキップ

前提条件

Hardhatプロジェクトがセットアップ済みで、スマートコントラクトのコンパイルが成功している必要があります。 その方法については Hardhatのセットアップとスマートコントラクトのコンパイル チュートリアルを参照してください。

テスト仕様の編集

テスト対象のスマートコントラクトは最小限のものなので、必要なテストケースも最小限です。 テスト前に、スマートコントラクトをデプロイする必要があります。 これは before ブロックで行われます。 スマートコントラクトは単独では実行できず、EVM内で実行する必要があるためです。 Hardhatでは、デフォルトでテストはエミュレートされたインメモリEVMインスタンスで実行され、一時的なものなので、デプロイは形式的なものです。 ファイルを開きます: test/Counter.test.js
const { expect } = require('chai');

describe('Counter', function () {
  let counter;

  before(async function () {
    Counter = await ethers.getContractFactory('Counter');
    counter = await Counter.deploy();
    await counter.waitForDeployment();
  });

  it('should start with a count of 0', async function () {
    expect(await counter.value()).to.equal(0);
  });

  it('should increment the count starting from zero', async function () {
    await counter.increment(100);
    expect(await counter.value()).to.equal(100);
  });

  it('should increment the count starting from non-zero', async function () {
    await counter.increment(23);
    expect(await counter.value()).to.equal(123);
  });
});

3つのテストケースがあります:
  • 初期 value() の確認。
  • increment(num) を呼び出し、value() が更新されたことを確認。
  • increment(num) を再度呼び出し、value() が再度更新されたことを確認。

スマートコントラクトに対するテストの実行

以下のコマンドでテストを実行します。
npx hardhat test
以下のコマンドは、エミュレートされたEVMインスタンスではなく、Injectiveテストネット(パブリックネットワーク)にスマートコントラクトをデプロイしてテストを実行します。 ほとんどの場合、この方法は推奨されません。特定/高度なユースケースでのみ必要です。
npx hardhat test --network inj_testnet

テスト出力の確認

すべてのテストが計画通りに動作すれば、以下のような出力が表示されます:
  Counter
    ✔ should start with a count of 0
    ✔ should increment the count starting from zero
    ✔ should increment the count starting from non-zero
  3 passing (41ms)
その後、gas(複雑さとトランザクションコストの指標)に関する追加レポートを含むテーブルが表示されます。

次のステップ

スマートコントラクトのテストが完了したので、次はスマートコントラクトのデプロイです! Hardhatを使用したスマートコントラクトのデプロイ チュートリアルに進みましょう。