#canister #internet-computer #icp #smart-contracts #testing

pocket-ic

口袋IC:一个 Canister 智能合约测试平台

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

Download history 879/week @ 2024-05-03 1027/week @ 2024-05-10 945/week @ 2024-05-17 1425/week @ 2024-05-24 1211/week @ 2024-05-31 1270/week @ 2024-06-07 1663/week @ 2024-06-14 2542/week @ 2024-06-21 2003/week @ 2024-06-28 2579/week @ 2024-07-05 1938/week @ 2024-07-12 2304/week @ 2024-07-19 2901/week @ 2024-07-26 2955/week @ 2024-08-02 2812/week @ 2024-08-09 2465/week @ 2024-08-16

每月下载量11,650
用于 4 crates

Apache-2.0

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