Налаштування
Перед тестуванням вашої програми переконайтеся, що ви:
- Зібрали вашу програму для генерації файлу
.so - Додали
litesvmяк dev-залежність до файлуCargo.toml - Додали будь-які додаткові dev-залежності, які можуть знадобитися, наприклад
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(),
включає всі увімкнені функції середовища виконання, стандартні sysvar'и,
прекомпіляції, spl-програми, перевірку підписів та всі вбудовані програми,
зокрема System Program.
Якщо ви хочете взаємодіяти з будь-якою програмою, яка не включена до стандартного тестового середовища, ви повинні розгорнути цю програму в тестовому середовищі.
Наступні кроки
У наступному розділі ми дізнаємося все про розгортання програм у тестовому середовищі LiteSVM.
Is this page helpful?