3个版本
0.0.1-alpha.3 | 2022年2月24日 |
---|---|
0.0.1-alpha.2 | 2022年2月10日 |
0.0.1-alpha.1 | 2022年2月1日 |
#341 in #programs
在 agsol-gold-contract 中使用
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