Настройка
Перед тестированием вашей программы убедитесь, что вы:
- Собрали программу для генерации файла
.so - Добавили
litesvmкак зависимость для разработки в файлCargo.toml - Добавили все необходимые дополнительные зависимости для разработки, например
solana-sdkиlitesvm-token - Создали тестовый файл в директории
tests
Базовая структура теста программы
Вот все основные шаги, необходимые для вызова и выполнения инструкции в программе 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!");}
Среда тестирования по умолчанию, создаваемая с помощью LiteSVM::new(),
включает все активированные функции среды выполнения, системные переменные по
умолчанию, прекомпиляции, программы spl, проверку подписей, а также все
встроенные программы, в том числе System Program.
Если вы хотите взаимодействовать с программой, которая не включена в среду тестирования по умолчанию, вы должны развернуть эту программу в тестовой среде.
Следующие шаги
В следующем разделе мы узнаем всё о развёртывании программ в тестовой среде litesvm.
Is this page helpful?