Pengaturan
Sebelum menguji program Anda, pastikan Anda:
- Build program Anda untuk menghasilkan file
.so - Tambahkan
litesvmsebagai dependensi dev ke fileCargo.toml - Tambahkan dependensi dev tambahan yang mungkin diperlukan, seperti
solana-sdkdanlitesvm-token - Buat file pengujian di direktori
testsAnda
Tata Letak Pengujian Program Dasar
Berikut adalah semua langkah dasar yang diperlukan untuk memanggil dan mengeksekusi instruksi dalam sebuah program Solana.
tests/program_test.rs
use litesvm::LiteSVM;use solana_sdk::{instruction::{AccountMeta, Instruction},pubkey::Pubkey,signature::{Keypair, Signer},transaction::Transaction,};use my_program;#[test]fn test_my_program() {// Initialize the test environmentlet mut svm = LiteSVM::new();// Deploy your program to the test environmentlet program_id = Pubkey::from(my_program::ID);let program_bytes = include_bytes!("../../../target/deploy/my_program.so");svm.add_program(program_id, program_bytes);// Create and fund test accountslet payer = Keypair::new();svm.airdrop(&payer.pubkey(), 10_000_000_000).unwrap();// Create your instructionlet instruction = Instruction {program_id,accounts: vec![AccountMeta::new(payer.pubkey(), true),],data: vec![],};// Build transactionlet tx = Transaction::new_signed_with_payer(&[instruction],Some(&payer.pubkey()),&[&payer],svm.latest_blockhash(),);// Send transactionlet result = svm.send_transaction(tx).unwrap();// Check transaction succeededprintln!("Transaction logs: {:?}", result.logs);println!("Program executed successfully!");}
Lingkungan pengujian default yang dihasilkan dengan LiteSVM::new() mencakup
semua fitur runtime yang diaktifkan, sysvars default, precompiles, program spl,
sigverify, dan semua program bawaan, seperti System Program.
Jika Anda ingin berinteraksi dengan program apa pun yang tidak disertakan dalam lingkungan pengujian default, Anda harus men-deploy program tersebut ke lingkungan pengujian.
Langkah Selanjutnya
Di bagian berikutnya, kita akan mempelajari semua tentang men-deploy program ke lingkungan pengujian litesvm.
Is this page helpful?