Study
Truffle

Menulis Test JavaScript dengan Truffle

Penjelasan

Test JavaScript di Truffle memakai Mocha sebagai test runner dan Chai (atau assert bawaan Truffle) untuk assertion, mirip Hardhat, tapi cara mengakses contract berbeda: Truffle memakai `artifacts.require("NamaContract")` untuk mendapatkan contract abstraction, lalu `.deployed()` untuk mendapatkan instance yang sudah di-deploy lewat migration (bukan deploy manual di dalam test seperti Hardhat). Truffle test juga otomatis menyediakan array `accounts` berisi daftar address yang tersedia di network development, langsung sebagai parameter fungsi `contract()` (pengganti `describe()` khusus Truffle yang juga me-reset state blockchain di antara file test).

Contoh Konsep

const SimpleBank = artifacts.require("SimpleBank");

contract("SimpleBank", (accounts) => {
  const [owner, user] = accounts;

  it("harus mulai dengan saldo 0", async () => {
    const bank = await SimpleBank.deployed();
    const balance = await bank.getBalance(user);
    assert.equal(balance.toString(), "0");
  });

  it("harus bertambah setelah deposit", async () => {
    const bank = await SimpleBank.deployed();
    await bank.deposit({ from: user, value: web3.utils.toWei("1", "ether") });

    const balance = await bank.getBalance(user);
    assert.equal(balance.toString(), web3.utils.toWei("1", "ether"));
  });
});

Praktikum

Tulis test yang memanggil deposit() sebanyak dua kali dari akun accounts[1], lalu memastikan getBalance() menunjukkan total gabungan kedua deposit tersebut.

Editor Latihan

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

Tips

Gunakan `contract()` bukan `describe()` biasa saat menulis test Truffle — `contract()` otomatis me-reset state contract sebelum tiap file test dijalankan, membuat test lebih terisolasi.