Solana DokümantasyonuLiteSVMRustEk Sandıklarlitesvm-utils

Hızlı Başlangıç

Kurulum

Gerekli tüm bağımlılıklara sahip olduğunuzdan emin olun:

cargo add --dev litesvm litesvm-utils

litesvm-utils Nedir?

litesvm-utils crate'i, Solana program testlerini basitleştiren temel yardımcı trait'ler ve araçlar sağlar. Ergonomik API'lar sayesinde yaygın test şablonlarını 30'dan fazla satırdan sade ve okunabilir koda indirger.

TestHelpers Trait

  • Tek bir metot çağrısıyla fonlanmış hesaplar oluşturun
  • Token mint'leri ve token account'ları kolayca kurun
  • Gereksiz kod tekrarı olmadan PDA'lar türetin
  • Zamana dayalı testler için slot'ları yönetin

AssertionHelpers Trait - Hesap durumlarını doğrulayın (mevcut, kapalı, sahip) - Token bakiyelerini ve mint arzlarını kontrol edin - SOL bakiyelerini kontrol edin - Hesap veri uzunluklarını doğrulayın

TransactionHelpers Trait - Zengin sonuç işleme ile talimatları çalıştırın

  • İşlem başarısını veya başarısızlığını doğrulayın - Belirli hata kodlarını kontrol edin - İşlem günlüklerini ve hesaplama birimlerini inceleyin

LiteSVMBuilder - Test ortamı kurulumu için akıcı builder deseni - Metot zinciriyle program dağıtın - Kullanışlı statik fabrika metodları

Hızlı Örnek

İşte litesvm-utils'in gücünü gösteren eksiksiz bir örnek:

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);
}

Temel Avantajlar

litesvm-utils Öncesi

// 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();

litesvm-utils Sonrası

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

Trait Genel Bakış

TestHelpers

YöntemDöndürürAçıklama
create_funded_account(lamports)Result<Keypair>Bir keypair oluşturur ve fonlar
create_funded_accounts(count, lamports)Result<Vec<Keypair>>Birden fazla fonlu keypair oluşturur
create_token_mint(authority, decimals)Result<Keypair>Bir SPL token mint'i oluşturur
create_token_account(mint, owner)Result<Keypair>Normal bir token account oluşturur
create_associated_token_account(mint, owner)Result<Pubkey>Bir ATA oluşturur, adresini döndürür
mint_to(mint, account, authority, amount)Result<()>Bir hesaba token basar
derive_pda(seeds, program_id)(Pubkey, u8)bump seed ile bir PDA türetir
get_pda(seeds, program_id)PubkeyYalnızca PDA adresini alır
get_pda_with_bump(seeds, program_id)(Pubkey, u8)derive_pda için takma ad
get_current_slot()u64Mevcut slot'u döndürür
advance_slot(slots)()Zamanı N slot ilerletir

AssertionHelpers

YöntemAçıklama
assert_account_exists(pubkey)Hesap mevcut değilse hata fırlatır
assert_account_closed(pubkey)Hesap mevcut ve veri/lamport içeriyorsa hata fırlatır
assert_token_balance(account, amount)Token bakiyesini doğrular
assert_sol_balance(pubkey, lamports)SOL bakiyesini doğrular
assert_mint_supply(mint, supply)Mint toplam arzını doğrular
assert_account_owner(pubkey, owner)Hesap sahibini doğrular
assert_account_data_len(pubkey, len)Veri uzunluğunu doğrular

TransactionHelpers

YöntemDöndürürAçıklama
send_instruction(ix, signers)Result<TransactionResult, TransactionError>Tek bir talimat gönderir
send_instructions(ixs, signers)Result<TransactionResult, TransactionError>Birden fazla talimatı tek tx'te gönderir
send_transaction_result(tx)Result<TransactionResult, TransactionError>Ham bir Transaction gönderir

Sorun Giderme

Yaygın Hatalar

HataNedenÇözüm
AccountNotFoundVar olmayan bir hesap kullanmaya çalışılıyorÖnce create_funded_account kullanın
InsufficientFundsİşlem için yeterli lamport yokBaşlangıç fonlama miktarını artırın
OwnerMismatchHesap yanlış programa aitDoğru program kimliğini doğrulayın
AssertionFailedBakiye veya durum beklenenle eşleşmiyorTest mantığınızı kontrol edin

Is this page helpful?

İçindekiler

Sayfayı Düzenle
© 2026 Solana Vakfı. Tüm hakları saklıdır.