Τεκμηρίωση SolanaLiteSVMTypeScriptΠαραδείγματα

Δοκιμή Προγράμματος

Η δοκιμή ενός προσαρμοσμένου προγράμματος Solana σημαίνει φόρτωση του μεταγλωττισμένου αρχείου .so στο SVM, ρύθμιση των λογαριασμών που αναμένει και αποστολή εντολών σε αυτό. Το LiteSVM διαχειρίζεται όλα αυτά εντός της διεργασίας — δεν απαιτείται validator. Συνιστούμε τη δημιουργία clients προγράμματος με τον Codama JS Renderer ώστε να έχετε πρόσβαση σε ένα συμβατό Kit Plugin.

Φόρτωση Προγράμματος

import { createClient, address, generateKeyPairSigner } from "@solana/kit";
import { litesvm } from "@solana/kit-plugin-litesvm";
import { signer } from "@solana/kit-plugin-signer";
import { myProgramPlugin } from "@my-program/sdk";
import * as fs from "node:fs";
const mySigner = await generateKeyPairSigner();
const client = createClient()
.use(signer(mySigner))
.use(litesvm())
.use(myProgramPlugin());
// Configure for program testing
client.svm
.withSigverify(false)
.withBlockhashCheck(false)
.withSysvars()
.withBuiltins();
// Load program from .so file
const programId = address("YourProgramId111111111111111111111111111");
const soPath = "/path/to/target/deploy/my_program.so";
if (fs.existsSync(soPath)) {
client.svm.addProgramFromFile(programId, soPath);
console.log("Program loaded:", programId);
// Verify program account
const programAccount = client.svm.getAccount(programId);
if (programAccount.exists) {
console.log(" Executable:", programAccount.executable);
console.log(" Data size:", programAccount.data.length, "bytes");
}
} else {
console.log("Program file not found:", soPath);
console.log("Build with: cargo build-sbf");
}

Πλήρης Ρύθμιση Δοκιμής Προγράμματος

import { createClient, address, generateKeyPairSigner, lamports } from '@solana/kit';
import { litesvm } from '@solana/kit-plugin-litesvm';
import { signer } from '@solana/kit-plugin-signer';
import { myProgramPlugin } from '@my-program/sdk';
import * as fs from 'node:fs';
const mySigner = await generateKeyPairSigner();
const client = createClient()
.use(signer(mySigner))
.use(litesvm())
.use(myProgramPlugin());
client.svm
.withSigverify(false)
.withBlockhashCheck(false)
.withSysvars()
.withBuiltins()
.withPrecompiles()
.withTransactionHistory(100n);
// Load program
const programId = address('YourProgramId111111111111111111111111111');
const soPath = '/path/to/target/deploy/my_program.so';
if (fs.existsSync(soPath)) {
client.svm.addProgramFromFile(programId, soPath);
}
// Set up any required data accounts
const dataAccountAddress = address('DataAccount111111111111111111111111111');
const minBalance = client.svm.minimumBalanceForRentExemption(100n);
client.svm.setAccount({
address: dataAccountAddress,
data: new Uint8Array(100),
executable: false,
lamports: lamports(minBalance),
programAddress: programId,
space: 100n,
});
// Send the transaction
await client.myProgram.testInstruction({..}).sendTransaction();
// Verify state changes
const updatedAccount = client.myProgram.myAccount.fetch(dataAccountAddress);
// assert on decoded account

Χρήση Προεπιλεγμένων Προγραμμάτων

Για δοκιμές που απαιτούν τυπικά προγράμματα:

const mySigner = await generateKeyPairSigner();
const client = createClient().use(signer(mySigner)).use(litesvm());
// Add all default programs (System, BPF Loader, etc.)
client.svm.withDefaultPrograms();
// Or add specific programs you need
// The Token program, Associated Token program, etc. would need
// to be added manually via addProgramFromFile if needed

Δημιουργήστε το πρόγραμμά σας Solana με cargo build-sbf για να παράγετε το αρχείο .so.

Το μοτίβο είναι πάντα το ίδιο:

  1. Φόρτωση Προγράμματος: Χρησιμοποιήστε το addProgramFromFile για να φορτώσετε μεταγλωττισμένα προγράμματα και εισαγάγετε το myProgramPlugin() από τον client σας
  2. Διαμόρφωση: Ενεργοποιήστε sysvars, builtins και precompiles όπως απαιτείται
  3. Ρύθμιση Λογαριασμών: Προ-συμπληρώστε λογαριασμούς δεδομένων με setAccount
  4. Αποστολή: Χρησιμοποιήστε client.myProgram.testInstruction({..}).sendTransaction() — χωρίς χειροκίνητη κατασκευή συναλλαγής
  5. Επαλήθευση: Ελέγξτε την κατάσταση του λογαριασμού μετά την εκτέλεση (client.myProgram.myAccount.fetch)

Μόλις αυτό το βασικό πλαίσιο λειτουργεί, μπορείτε να δημιουργήσετε μια πλήρη σουίτα δοκιμών προσθέτοντας περισσότερες εντολές και ισχυρισμούς.

Is this page helpful?

Πίνακας Περιεχομένων

Επεξεργασία Σελίδας
© 2026 Ίδρυμα Solana. Με επιφύλαξη παντός δικαιώματος.