Aperçu
Considérez LiteSVM comme une VM Solana s'exécutant à l'intérieur de votre fonction de test. Pas en tant que processus séparé, ni en tant que service réseau — c'est simplement un appel de bibliothèque dans votre code.
Tests traditionnels
// Traditional approach - slow and complexlet validator = TestValidator::new().await; // Starts separate processlet client = RpcClient::new(validator.url()); // Network connection// Every operation is async and goes over networklet balance = client.get_balance(&pubkey).await?;tokio::time::sleep(Duration::from_secs(1)).await; // Wait for confirmation
Tests avec LiteSVM
// LiteSVM - fast and simplelet mut svm = LiteSVM::new(); // Just a struct in memory// Everything is synchronous and immediatelet balance = svm.get_balance(&pubkey).unwrap_or(0);
Principes fondamentaux
1. Tout est synchrone
Pas de async, pas de await, pas de délais :
// Send transaction and check result immediatelysvm.send_transaction(tx).unwrap();let balance = svm.get_balance(&account).unwrap(); // Already updated!
2. Manipulation directe de l'état
// Create any account with any datasvm.set_account(pubkey, Account {lamports: 1_000_000_000,data: vec![1, 2, 3, 4],owner: program_id,executable: false,rent_epoch: 0,}).unwrap();
3. Le Temps est Sous Votre Contrôle
// Jump to any slot instantlysvm.warp_to_slot(1000);// Expire blockhashes on demandsvm.expire_blockhash();// Set any sysvarlet mut clock = svm.get_sysvar::<Clock>();clock.unix_timestamp = 1735689600; // Jan 1, 2025svm.set_sysvar(&clock);
4. Les Erreurs sont Immédiates et Claires
match svm.send_transaction(tx) {Ok(meta) => {// Transaction succeededprintln!("Compute units: {}", meta.compute_units_consumed);}Err(e) => {// Error with full detailsprintln!("Error: {:?}", e.err);println!("Logs: {:?}", e.meta.logs);}}
Étapes Suivantes
Tester Votre Programme →
Apprenez comment tester votre propre programme Solana
Exemples
→ Consultez des solutions prêtes à l'emploi
pour les scénarios courants et des exemples de dépôts complets
Référence API → Découvrez les
fonctionnalités avancées et les configurations personnalisées
Is this page helpful?