Solana-dokumentaatioLiteSVMRustLisälaatikotlitesvm-utils

Pikaopas

Asennus

Varmista, että sinulla on kaikki tarvittavat riippuvuudet:

cargo add --dev litesvm litesvm-utils

Mikä on litesvm-utils?

litesvm-utils-crate tarjoaa keskeisiä apupiirteitä ja työkaluja, jotka yksinkertaistavat Solana-ohjelmien testausta. Se vähentää yleisen testauksen standardikoodin 30+ rivistä minimalistiseksi, luettavaksi koodiksi ergonomisten API-rajapintojen avulla.

TestHelpers-piirre

  • Luo rahoitettuja tilejä yhdellä metodikutsulla
  • Määritä token-mintit ja token account -tilit helposti
  • Johda PDA:t ilman standardikoodia
  • Hallinnoi slot-aikoja aikaperusteiseen testaukseen

AssertionHelpers-piirre – Tarkista tilien tilat (olemassa, suljettu, omistaja) – Vahvista token-saldot ja mint-tarjonnat – Tarkista SOL-saldot – Vahvista tilitietojen pituudet

TransactionHelpers-piirre – Suorita käskyjä monipuolisella tulostenkäsittelyllä – Varmista tapahtuman onnistuminen tai epäonnistuminen – Tarkista tietyt virhekoodit – Tutki tapahtumalokit ja laskentayksiköt

LiteSVMBuilder - Joustava rakentajamalli testiympäristön määrittämiseen

  • Ota ohjelmat käyttöön metodiketjutuksella - Kätevät staattiset tehdasmetodit

Pikana esimerkki

Tässä on täydellinen esimerkki, joka havainnollistaa litesvm-utilsin tehon:

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

Keskeiset edut

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

litesvm-utilsin jälkeen

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

Traitin yleiskatsaus

TestHelpers

MetodiPalauttaaKuvaus
create_funded_account(lamports)Result<Keypair>Luo keypair ja rahoittaa sen
create_funded_accounts(count, lamports)Result<Vec<Keypair>>Luo useita rahoitettuja keypaireja
create_token_mint(authority, decimals)Result<Keypair>Luo SPL-tokenin mintin
create_token_account(mint, owner)Result<Keypair>Luo tavallisen token account
create_associated_token_account(mint, owner)Result<Pubkey>Luo ATA:n ja palauttaa sen osoitteen
mint_to(mint, account, authority, amount)Result<()>Mintaa tokeneita tilille
derive_pda(seeds, program_id)(Pubkey, u8)Johtaa PDA:n bump seedillä
get_pda(seeds, program_id)PubkeyHakee pelkän PDA-osoitteen
get_pda_with_bump(seeds, program_id)(Pubkey, u8)Alias kohteelle derive_pda
get_current_slot()u64Palauttaa nykyisen slot
advance_slot(slots)()Edistää aikaa N slotilla

AssertionHelpers

MetodiKuvaus
assert_account_exists(pubkey)Aiheuttaa paniikin, jos tiliä ei ole olemassa
assert_account_closed(pubkey)Aiheuttaa paniikin, jos tili on olemassa ja sillä on dataa/lamporteja
assert_token_balance(account, amount)Tarkistaa token-saldon
assert_sol_balance(pubkey, lamports)Tarkistaa SOL-saldon
assert_mint_supply(mint, supply)Tarkistaa mintin kokonaistarjonnan
assert_account_owner(pubkey, owner)Tarkistaa tilin omistajan
assert_account_data_len(pubkey, len)Tarkistaa datan pituuden

TransactionHelpers

MetodiPalauttaaKuvaus
send_instruction(ix, signers)Result<TransactionResult, TransactionError>Lähettää yksittäisen instruktion
send_instructions(ixs, signers)Result<TransactionResult, TransactionError>Lähettää useita instruktioita yhdessä tx:ssä
send_transaction_result(tx)Result<TransactionResult, TransactionError>Lähettää raakana Transaction

Vianmääritys

Yleiset virheet

VirheSyyRatkaisu
AccountNotFoundYritetään käyttää tiliä, jota ei ole olemassaKäytä ensin create_funded_account
InsufficientFundsEi tarpeeksi lamports transaktiota vartenKasvata alkurahoituksen määrää
OwnerMismatchTilin omistaa väärä ohjelmaTarkista oikea ohjelmatunnus
AssertionFailedSaldo tai tila ei vastaa odotettuaTarkista testilogiikkasi

Is this page helpful?

Sisällysluettelo

Muokkaa sivua
© 2026 Solana Foundation. Kaikki oikeudet pidätetään.