Einrichtung
Bevor Sie Ihr Programm testen, stellen Sie sicher, dass Sie:
- Bauen Sie Ihr Programm, um die Datei
.sozu generieren - Fügen Sie
litesvmals Dev-Abhängigkeit zur DateiCargo.tomlhinzu - Fügen Sie alle weiteren benötigten Dev-Abhängigkeiten hinzu, wie
solana-sdkundlitesvm-token - Erstellen Sie eine Testdatei in Ihrem
tests-Verzeichnis
Grundlegender Programmtest-Aufbau
Hier sind alle grundlegenden Schritte, die erforderlich sind, um eine Anweisung in einem Solana-Programm aufzurufen und auszuführen.
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!");}
Die Standard-Testumgebung, die mit LiteSVM::new() generiert wird, enthält alle
aktivierten Laufzeit-Features, Standard-Sysvars, Precompiles, SPL-Programme,
Sigverify sowie alle integrierten Programme, wie das System Program.
Wenn Sie mit einem Programm interagieren möchten, das nicht in der Standard-Testumgebung enthalten ist, müssen Sie dieses Programm in der Testumgebung deployen.
Nächste Schritte
Im nächsten Abschnitt werden wir alles über das Deployment von Programmen in die LiteSVM-Testumgebung erfahren.
Is this page helpful?