Study
Truffle

Menulis Test Solidity Langsung di Truffle

Penjelasan

Selain test JavaScript, Truffle juga mendukung penulisan test langsung dalam Solidity — fitur unik yang mendahului pendekatan serupa di Foundry. File test Solidity diletakkan di folder `test/` dengan akhiran `.sol`, meng-import library `truffle/Assert.sol` untuk fungsi assertion seperti `Assert.equal()`, dan `truffle/DeployedAddresses.sol` untuk mengambil alamat contract yang sudah di-deploy migration. Namun berbeda dari Foundry yang seluruh ekosistem testingnya berbasis Solidity, fitur ini di Truffle lebih jarang dipakai dibanding test JavaScript, karena kurang fleksibel untuk skenario kompleks (tidak ada cheatcode setara vm.prank) dan komunitas lebih banyak memilih test JS untuk kasus non-trivial.

Contoh Konsep

// test/TestSimpleBank.sol
pragma solidity ^0.8.20;

import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/SimpleBank.sol";

contract TestSimpleBank {
    function testInitialBalanceIsZero() public {
        SimpleBank bank = SimpleBank(DeployedAddresses.SimpleBank());

        uint256 expected = 0;
        Assert.equal(
            bank.getBalance(address(this)),
            expected,
            "Saldo awal harus 0"
        );
    }
}

Praktikum

Tulis test Solidity yang memverifikasi bahwa contract SimpleBank sudah ter-deploy dengan benar (address bukan address(0)).

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Pakai test Solidity hanya untuk pengecekan sederhana seputar state contract — untuk skenario yang butuh manipulasi akun/saldo kompleks, test JavaScript jauh lebih praktis di Truffle.