Configuración
Antes de probar tu programa, asegúrate de:
- Compila tu programa para generar el archivo
.so - Agrega
litesvmcomo dependencia de desarrollo al archivoCargo.toml - Agrega cualquier dependencia de desarrollo adicional que pueda ser necesaria,
como
solana-sdkylitesvm-token - Crea un archivo de prueba en tu directorio
tests
Estructura Básica de Prueba de Programa
Aquí están todos los pasos básicos necesarios para llamar y ejecutar una instrucción en un programa de 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!");}
El entorno de prueba predeterminado que se genera con LiteSVM::new() incluye
todas las funciones de tiempo de ejecución habilitadas, sysvars predeterminados,
precompilaciones, programas spl, sigverify y todos los programas integrados,
como el System Program.
Si deseas interactuar con algún programa que no está incluido en el entorno de prueba predeterminado, debes desplegarlo en el entorno de prueba.
Próximos Pasos
En la siguiente sección, aprenderemos todo sobre el despliegue de programas en el entorno de prueba de litesvm.
Is this page helpful?