Konfiguracja
Przed przetestowaniem programu upewnij się, że:
- Zbudujesz program, aby wygenerować plik
.so - Dodasz
litesvmjako zależność deweloperską do plikuCargo.toml - Dodasz wszelkie dodatkowe zależności deweloperskie, które mogą być potrzebne,
takie jak
solana-sdkilitesvm-token - Utworzysz plik testowy w katalogu
tests
Podstawowy układ testu programu
Oto wszystkie podstawowe kroki potrzebne do wywołania i wykonania instrukcji w programie 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!");}
Domyślne środowisko testowe generowane przez LiteSVM::new() zawiera wszystkie
włączone funkcje środowiska uruchomieniowego, domyślne sysvary, prekompilacje,
programy spl, weryfikację podpisów oraz wszystkie wbudowane programy, takie jak
System Program.
Jeśli chcesz korzystać z programu, który nie jest uwzględniony w domyślnym środowisku testowym, musisz wdrożyć ten program do środowiska testowego.
Następne kroki
W następnej sekcji dowiemy się wszystkiego o wdrażaniu programów do środowiska testowego litesvm.
Is this page helpful?