Dokumentasi SolanaLiteSVMRustPeti Tambahanlitesvm-utils

Mulai Cepat

Instalasi

Pastikan Anda memiliki semua dependensi yang diperlukan:

cargo add --dev litesvm litesvm-utils

Apa itu litesvm-utils?

Crate litesvm-utils menyediakan trait pembantu dan utilitas penting yang menyederhanakan pengujian program Solana. Crate ini mengurangi boilerplate pengujian yang umum dari 30+ baris menjadi kode yang ringkas dan mudah dibaca melalui API yang ergonomis.

Trait TestHelpers

  • Buat akun yang didanai dengan satu pemanggilan metode
  • Siapkan mint token dan token account dengan mudah
  • Turunkan PDA tanpa boilerplate
  • Kelola slot untuk pengujian berbasis waktu

Trait AssertionHelpers - Periksa status akun (ada, ditutup, pemilik) - Verifikasi saldo token dan suplai mint - Periksa saldo SOL - Validasi panjang data akun

Trait TransactionHelpers - Jalankan instruksi dengan penanganan hasil yang lengkap - Pastikan keberhasilan atau kegagalan transaksi - Periksa kode error tertentu - Inspeksi log transaksi dan unit komputasi

LiteSVMBuilder - Pola builder yang fluent untuk pengaturan lingkungan pengujian - Deploy program dengan method chaining - Metode factory statis yang praktis

Contoh Cepat

Berikut adalah contoh lengkap yang menunjukkan kekuatan litesvm-utils:

use litesvm_utils::{AssertionHelpers, LiteSVM, Signer, TestHelpers, TransactionHelpers};
use solana_sdk::{native_token::LAMPORTS_PER_SOL, system_instruction};
#[test]
fn test_with_utils() {
let mut svm = LiteSVM::new();
// Create funded accounts in one line
let alice = svm.create_funded_account(10 * LAMPORTS_PER_SOL).unwrap();
let bob = svm.create_funded_account(0).unwrap();
// Create a token mint easily
let mint = svm.create_token_mint(&alice, 9).unwrap();
// Create associated token accounts (returns Pubkey)
let alice_ata = svm.create_associated_token_account(&mint.pubkey(), &alice).unwrap();
let bob_ata = svm.create_associated_token_account(&mint.pubkey(), &bob).unwrap();
// Mint tokens
svm.mint_to(&mint.pubkey(), &alice_ata, &alice, 1000).unwrap();
// Assert balances
svm.assert_token_balance(&alice_ata, 1000);
svm.assert_token_balance(&bob_ata, 0);
// Execute a SOL transfer with rich result handling
let transfer_ix = system_instruction::transfer(
&alice.pubkey(),
&bob.pubkey(),
LAMPORTS_PER_SOL,
);
let result = svm.send_instruction(transfer_ix, &[&alice]).unwrap();
result.assert_success();
// Verify the transfer
svm.assert_sol_balance(&bob.pubkey(), LAMPORTS_PER_SOL);
}

Manfaat Utama

Sebelum litesvm-utils

// Creating a funded account manually
let keypair = Keypair::new();
let airdrop_tx = Transaction::new_signed_with_payer(
&[system_instruction::transfer(
&payer.pubkey(),
&keypair.pubkey(),
lamports,
)],
Some(&payer.pubkey()),
&[&payer],
svm.latest_blockhash(),
);
svm.send_transaction(airdrop_tx).unwrap();

Setelah litesvm-utils

// One line to create a funded account
let keypair = svm.create_funded_account(lamports).unwrap();

Ringkasan Trait

TestHelpers

MethodReturnsDescription
create_funded_account(lamports)Result<Keypair>Membuat keypair dan mendanainya
create_funded_accounts(count, lamports)Result<Vec<Keypair>>Membuat beberapa keypair yang didanai
create_token_mint(authority, decimals)Result<Keypair>Membuat mint token SPL
create_token_account(mint, owner)Result<Keypair>Membuat token account biasa
create_associated_token_account(mint, owner)Result<Pubkey>Membuat ATA, mengembalikan alamatnya
mint_to(mint, account, authority, amount)Result<()>Mencetak token ke suatu akun
derive_pda(seeds, program_id)(Pubkey, u8)Menurunkan PDA dengan bump seed
get_pda(seeds, program_id)PubkeyMendapatkan hanya alamat PDA
get_pda_with_bump(seeds, program_id)(Pubkey, u8)Alias untuk derive_pda
get_current_slot()u64Mengembalikan slot saat ini
advance_slot(slots)()Memajukan waktu sebanyak N slot

AssertionHelpers

MethodDescription
assert_account_exists(pubkey)Panik jika akun tidak ada
assert_account_closed(pubkey)Panik jika akun ada dan memiliki data/lamports
assert_token_balance(account, amount)Memverifikasi saldo token
assert_sol_balance(pubkey, lamports)Memverifikasi saldo SOL
assert_mint_supply(mint, supply)Memverifikasi total suplai mint
assert_account_owner(pubkey, owner)Memverifikasi pemilik akun
assert_account_data_len(pubkey, len)Memverifikasi panjang data

TransactionHelpers

MethodReturnsDescription
send_instruction(ix, signers)Result<TransactionResult, TransactionError>Mengirim satu instruksi
send_instructions(ixs, signers)Result<TransactionResult, TransactionError>Mengirim beberapa instruksi dalam satu tx
send_transaction_result(tx)Result<TransactionResult, TransactionError>Mengirim Transaction mentah

Pemecahan Masalah

Kesalahan Umum

KesalahanPenyebabSolusi
AccountNotFoundMencoba menggunakan akun yang tidak adaGunakan create_funded_account terlebih dahulu
InsufficientFundsLamport tidak cukup untuk transaksiTingkatkan jumlah pendanaan awal
OwnerMismatchAkun dimiliki oleh program yang salahVerifikasi ID program yang benar
AssertionFailedSaldo atau status tidak sesuai yang diharapkanPeriksa logika pengujian Anda

Is this page helpful?

Daftar Isi

Edit Halaman
© 2026 Yayasan Solana. Semua hak dilindungi.