問題一覧に戻る
中級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));
});
});