البدء

دليل البدء السريع

يغطي هذا الدليل الأساسيات: كيفية إنشاء حساب، وتمويل حساب، وإرسال معاملة.

تثبيت التبعيات

أضف LiteSVM إلى تبعيات التطوير الخاصة بك:

cargo add --dev litesvm

تعمل العديد من حزم سولانا على تحسين تجربة الاختبار من خلال توفير الأنواع والأدوات المساعدة الأساسية. يمكنك استخدام حزمة solana-sdk المريحة أو حزم المكونات الفردية:

cargo add --dev solana-sdk

إنشاء ملف الاختبار

داخل مساحة العمل الخاصة بك، أنشئ مجلدًا لـ tests.

mkdir tests

إنشاء حساب وتمويله

لنكتب أول اختبار LiteSVM لك.

داخل مجلد tests الخاص بك، أنشئ ملفًا جديدًا وانسخ هذا الكود:

tests/create_account.rs
use litesvm::LiteSVM;
use solana_sdk::signature::{Keypair, Signer};
#[test]
fn create_account() {
// Create the test environment
let mut svm = LiteSVM::new();
// Create a test account
let user = Keypair::new();
// Fund the account with SOL
svm.airdrop(&user.pubkey(), 1_000_000_000).unwrap();
// Check the balance
let 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 test
test create_account ... ok
successes:
---- create_account stdout ----
Account funded with 1 SOL
successes:
create_account

هذا كل شيء! لقد أنشأت للتو أول اختبار litesvm خاص بك، والذي يغطي إنشاء حساب وتمويله.

تنفيذ معاملة

الآن لنقم بإنشاء معاملة تحويل.

أنشئ ملف اختبار جديدًا وانسخ هذا الكود:

tests/transfer_test.rs
use litesvm::LiteSVM;
use solana_sdk::{
signature::{Keypair, Signer},
system_instruction,
transaction::Transaction,
};
#[test]
fn test_transfer() {
let mut svm = LiteSVM::new();
// Create two accounts
let alice = Keypair::new();
let bob = Keypair::new();
// Fund Alice
svm.airdrop(&alice.pubkey(), 2_000_000_000).unwrap();
// Create transfer instruction
let transfer = system_instruction::transfer(
&alice.pubkey(),
&bob.pubkey(),
1_000_000_000, // 1 SOL
);
// Build and sign transaction
let 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 balances
assert_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 test
test create_account ... ok
successes:
---- create_account stdout ----
Account funded with 1 SOL
successes:
create_account
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
Running tests/test_transfer.rs (target/debug/deps/test_transfer-f174954e7483f36b)
running 1 test
test test_transfer ... ok
successes:
---- test_transfer stdout ----
Transfer successful!
successes:
test_transfer
test 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?

جدول المحتويات

تعديل الصفحة