問題一覧に戻る
中級Solanaプログラミング基礎
問題28: Anchorプログラムのテスト

クライアント側からAnchorプログラムをテストする方法を学びます。テストファイルは、プログラムのinitializeインストラクションを呼び出す方法を示しています。このテストは新しいアカウントを作成し、カスタムデータでトランザクションを送信し、オンチェーンの状態が期待値と一致することを検証します。

// No imports needed: web3, anchor, pg and more are globally available

describe("Test", () => {
it("initialize", async () => {
// 作成するアカウントの新しいキーペアを生成
const newAccountKp = new web3.();

// プログラムにトランザクションを構築して送信
const data = new BN(42);
// プログラムのインストラクションビルダーにアクセス
const txHash = await pg.program.
// パラメータを指定して特定のインストラクションを呼び出し
.(data)
// インストラクションに必要なすべてのアカウントを提供
.({
newAccount: newAccountKp.publicKey,
signer: pg.wallet.publicKey,
systemProgram: web3.SystemProgram.programId
})
.signers([newAccountKp])
// トランザクションを実行して送信
.();
console.log(`Use 'solana confirm -v ${txHash}' to see the logs`);

// トランザクションの完了を待機
await pg.connection.(txHash);

// ブロックチェーンからアカウントデータを取得
const newAccount = await pg.program.account.newAccount.(
newAccountKp.publicKey
);

console.log("On-chain data is:", newAccount.data.toString());

// オンチェーンデータが期待値と一致することを確認
assert(data.(newAccount.data));
});
});