دليل البدء السريع
يغطي هذا الدليل الأساسيات: كيفية إنشاء حساب، وتمويل حساب، وإرسال معاملة.
تثبيت التبعيات
أضف LiteSVM إلى تبعيات التطوير الخاصة بك:
cargo add --dev litesvm
تعمل العديد من حزم سولانا على تحسين تجربة الاختبار من خلال توفير الأنواع
والأدوات المساعدة الأساسية. يمكنك استخدام حزمة solana-sdk المريحة أو حزم
المكونات الفردية:
cargo add --dev solana-sdk
إنشاء ملف الاختبار
داخل مساحة العمل الخاصة بك، أنشئ مجلدًا لـ tests.
mkdir tests
إنشاء حساب وتمويله
لنكتب أول اختبار LiteSVM لك.
داخل مجلد tests الخاص بك، أنشئ ملفًا جديدًا وانسخ هذا الكود:
use litesvm::LiteSVM;use solana_sdk::signature::{Keypair, Signer};#[test]fn create_account() {// Create the test environmentlet mut svm = LiteSVM::new();// Create a test accountlet user = Keypair::new();// Fund the account with SOLsvm.airdrop(&user.pubkey(), 1_000_000_000).unwrap();// Check the balancelet balance = svm.get_balance(&user.pubkey()).unwrap();assert_eq!(balance, 1_000_000_000);println!("Account funded with {} SOL", balance as f64 / 1e9);}
تشغيل اختبارك
cargo test create_account -- --show-output
يجب أن ترى:
running 1 testtest create_account ... oksuccesses:---- create_account stdout ----Account funded with 1 SOLsuccesses:create_account
هذا كل شيء! لقد أنشأت للتو أول اختبار litesvm خاص بك، والذي يغطي إنشاء حساب وتمويله.
تنفيذ معاملة
الآن لنقم بإنشاء معاملة تحويل.
أنشئ ملف اختبار جديدًا وانسخ هذا الكود:
use litesvm::LiteSVM;use solana_sdk::{signature::{Keypair, Signer},system_instruction,transaction::Transaction,};#[test]fn test_transfer() {let mut svm = LiteSVM::new();// Create two accountslet alice = Keypair::new();let bob = Keypair::new();// Fund Alicesvm.airdrop(&alice.pubkey(), 2_000_000_000).unwrap();// Create transfer instructionlet transfer = system_instruction::transfer(&alice.pubkey(),&bob.pubkey(),1_000_000_000, // 1 SOL);// Build and sign transactionlet tx = Transaction::new_signed_with_payer(&[transfer],Some(&alice.pubkey()),&[&alice],svm.latest_blockhash(),);// Send it (execution happens immediately)svm.send_transaction(tx).unwrap();// Check new balancesassert_eq!(svm.get_balance(&bob.pubkey()).unwrap(), 1_000_000_000);assert!(svm.get_balance(&alice.pubkey()).unwrap() < 1_000_000_000);println!("Transfer successful!");}
اكتمل الاختبار! يغطي هذا الاختبار تنفيذ تعليمة التحويل من System Program.
تشغيل جميع الاختبارات
cargo test -- --show-output
يجب أن ترى:
running 1 testtest create_account ... oksuccesses:---- create_account stdout ----Account funded with 1 SOLsuccesses:create_accounttest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04sRunning tests/test_transfer.rs (target/debug/deps/test_transfer-f174954e7483f36b)running 1 testtest test_transfer ... oksuccesses:---- test_transfer stdout ----Transfer successful!successes:test_transfertest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
هذا كل شيء! لقد نجحت الآن في إنشاء اختبارات litesvm التي تُنشئ حسابات وتموّلها وتُنفّذ المعاملات.
الخطوات التالية
لماذا LiteSVM → تعرّف على سبب رغبتك في استخدام LiteSVM للاختبار
اختبار برنامجك → تعلّم كيفية
اختبار برنامج سولانا الخاص بك
الأمثلة
→ اطّلع على حلول جاهزة للنسخ واللصق
للسيناريوهات الشائعة وأمثلة المستودعات الكاملة
مرجع API
→ تعلّم الميزات المتقدمة والإعدادات
المخصصة
Is this page helpful?