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.
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.