#solana #programs #testing #error #context #testbench #agsol

agsol-testbench

用于本地测试solana程序的测试工具

3个版本

0.0.1-alpha.32022年2月24日
0.0.1-alpha.22022年2月10日
0.0.1-alpha.12022年2月1日

#341 in #programs


agsol-gold-contract 中使用

MIT 许可证

17KB
308

方便的数据结构和与Solana程序测试上下文交互的方法。

示例

假设有一个具有以下形式的Solana程序

// foo_program::processor
fn processor(
    id: &Pubkey,
    accounts: &[AccountInfo],
    data: &[u8]
) -> Result<(), ProgramError>
{
    // snip
    Ok(())
}

它可以加载到测试平台中

use agsol_testbench::{Testbench, TestbenchProgram, TestUser};
use solana_program_test::processor;

// program `foo` with program pubkey FOO_PROGRAM_ID
let program_from_processor = TestbenchProgram {
    name: "foo_bpf_program",
    id: FOO_PROGRAM_ID,
    process_instruction: processor!(foo_program::processor),
};

// program `bar` with program pubkey BAR_PROGRAM_ID
let program_from_binary = TestbenchProgram {
    name: "bar_bpf_program",
    id: BAR_PROGRAM_ID,
    process_instruction: None,
};

// load programs into the test context
let mut testbench = Testbench::new(&[program_from_processor, program_from_binary]).await.unwrap();

// create a test user with an airdrop
let test_user = TestUser::new(&mut testbench).await.unwrap().unwrap();

依赖项

~90MB
~1.5M SLoC