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 linelet alice = svm.create_funded_account(10 * LAMPORTS_PER_SOL).unwrap();let bob = svm.create_funded_account(0).unwrap();// Create a token mint easilylet 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 tokenssvm.mint_to(&mint.pubkey(), &alice_ata, &alice, 1000).unwrap();// Assert balancessvm.assert_token_balance(&alice_ata, 1000);svm.assert_token_balance(&bob_ata, 0);// Execute a SOL transfer with rich result handlinglet 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 transfersvm.assert_sol_balance(&bob.pubkey(), LAMPORTS_PER_SOL);}
Keskeiset edut
Ennen litesvm-utils
// Creating a funded account manuallylet 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 accountlet keypair = svm.create_funded_account(lamports).unwrap();
Traitin yleiskatsaus
TestHelpers
| Metodi | Palauttaa | Kuvaus |
|---|---|---|
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) | Pubkey | Hakee pelkän PDA-osoitteen |
get_pda_with_bump(seeds, program_id) | (Pubkey, u8) | Alias kohteelle derive_pda |
get_current_slot() | u64 | Palauttaa nykyisen slot |
advance_slot(slots) | () | Edistää aikaa N slotilla |
AssertionHelpers
| Metodi | Kuvaus |
|---|---|
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
| Metodi | Palauttaa | Kuvaus |
|---|---|---|
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
| Virhe | Syy | Ratkaisu |
|---|---|---|
AccountNotFound | Yritetään käyttää tiliä, jota ei ole olemassa | Käytä ensin create_funded_account |
InsufficientFunds | Ei tarpeeksi lamports transaktiota varten | Kasvata alkurahoituksen määrää |
OwnerMismatch | Tilin omistaa väärä ohjelma | Tarkista oikea ohjelmatunnus |
AssertionFailed | Saldo tai tila ei vastaa odotettua | Tarkista testilogiikkasi |
Is this page helpful?