Documentation Index
Fetch the complete documentation index at: https://injectivelabs-mintlify-jp-developers-first-half-1777019423.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
前提条件
Foundryプロジェクトがセットアップ済みで、スマートコントラクトのコンパイルが成功している必要があります。
その方法については Foundryのセットアップとスマートコントラクトのコンパイル チュートリアルを参照してください。
テスト仕様の編集
テスト対象のスマートコントラクトは最小限のものなので、必要なテストケースも最小限です。
テスト前に、スマートコントラクトをデプロイする必要があります。
これは setUp ブロックで行われます。
スマートコントラクトは単独では実行できず、EVM内で実行する必要があるためです。
Foundryでは、デフォルトでテストはエミュレートされたインメモリEVMインスタンスで実行され、一時的なものなので、デプロイは形式的な処理にすぎません。
ファイルを開きます: test/Counter.t.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
import { Test } from "forge-std/Test.sol";
import { Counter } from "../src/Counter.sol";
contract CounterTest is Test {
Counter public counter;
function setUp() public {
counter = new Counter();
}
function testInitialValue() public view {
assertEq(counter.value(), 0);
}
function testIncrementValueFromZero() public {
counter.increment(100);
assertEq(counter.value(), 100);
}
function testIncrementValueFromNonZero() public {
counter.increment(100);
counter.increment(23);
assertEq(counter.value(), 123);
}
}
3つのテストケースがあります:
- 初期
value() の確認。
increment(num) を呼び出し、value() が更新されたことを確認。
increment(num) を再度呼び出し、value() が再度更新されたことを確認。
スマートコントラクトに対するテストの実行
以下のコマンドでテストを実行します。
テスト出力の確認
すべてのテストが計画通りに動作すれば、以下のような出力が表示されます:
Ran 3 tests for test/Counter.t.sol:CounterTest
[PASS] testIncrementValueFromNonZero() (gas: 32298)
[PASS] testIncrementValueFromZero() (gas: 31329)
[PASS] testInitialValue() (gas: 10392)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 5.35ms (3.16ms CPU time)
Ran 1 test suite in 171.04ms (5.35ms CPU time): 3 tests passed, 0 failed, 0 skipped (3 total tests)
次のステップ
スマートコントラクトのテストが完了したので、次はスマートコントラクトのデプロイです!
Foundryを使用したスマートコントラクトのデプロイ チュートリアルに進みましょう。