8个稳定版本 (3个主要版本)
4.0.0 | 2024年7月23日 |
---|---|
3.1.0 | 2024年5月2日 |
2.2.0 | 2024年2月14日 |
2.0.1 | 2023年11月23日 |
1.0.0 | 2023年10月12日 |
#1 in #smart-contract
每月下载量11,650
用于 4 crates
140KB
3K SLoC
口袋IC Rust:一个 Canister 测试库
口袋IC 是一个用于 互联网计算机 的本地 canister 测试解决方案。
此测试库与 口袋IC 服务器 一起工作,允许您与您的本地 IC 实例及其上的 canister 进行交互。
使用 PocketIC Rust,测试 canister 与调用 Rust 函数一样简单。以下是一个简单的示例
use candid::encode_one;
use pocket_ic::PocketIc;
#[test]
fn test_counter_canister() {
let pic = PocketIc::new();
// Create an empty canister as the anonymous principal and add cycles.
let canister_id = pic.create_canister();
pic.add_cycles(canister_id, 2_000_000_000_000);
let wasm_bytes = load_counter_wasm(...);
pic.install_canister(canister_id, wasm_bytes, vec![], None);
// 'inc' is a counter canister method.
call_counter_canister(&pic, canister_id, "inc");
// Check if it had the desired effect.
let reply = call_counter_canister(&pic, canister_id, "read");
assert_eq!(reply, WasmResult::Reply(vec![0, 0, 0, 1]));
}
fn call_counter_canister(pic: &PocketIc, canister_id: CanisterId, method: &str) -> WasmResult {
pic.update_call(canister_id, Principal::anonymous(), method, encode_one(()).unwrap())
.expect("Failed to call counter canister")
}
入门
快速入门
- 从 口袋IC 仓库 下载最新的 口袋IC 服务器。
- 将二进制文件留在您当前的工作目录中,或者通过在运行测试之前设置
POCKET_IC_BIN
环境变量来指定二进制文件的路径。 - 使用
cargo add pocket-ic
将 PocketIC Rust 添加到您的项目中。 - 使用
use pocket_ic::PocketIc
导入PocketIC,并在Rust代码中使用let pic = PocketIc::new()
创建一个新的PocketIC实例,然后开始测试!
示例
关于与计数器信标完整但简单的示例,请参阅此处。关于在两个不同子网上的账本信标进行跨信标调用的示例,请参阅此处。
要查看Rust项目中PocketIC的最小化配置,请查看ICP Hello World Rust存储库。
对于包含更复杂测试设置的较大测试套件,请考虑OpenChat集成测试套件。请注意,那里的实例在测试用例之间共享,这通常是不推荐的。
文档
贡献
如果您决定贡献,我们鼓励您在论坛上宣布!
依赖项
~13–27MB
~441K SLoC