21 个版本 (11 个重大更新)
| 0.13.0 | 2024年8月1日 | 
|---|---|
| 0.12.0 | 2024年5月17日 | 
| 0.11.0 | 2024年3月15日 | 
| 0.10.0 | 2023年11月3日 | 
| 0.2.2 | 2020年11月8日 | 
#876 in 神奇豆
每月下载量 587 次
在 ckb-capsule 中使用
32KB
618 代码行
CKB 测试工具
一个用于编写 CKB 脚本测试用例的辅助库。它来自 capsule
lib.rs:
ckb-testtool
此模块为 CKB 合同提供测试上下文。
要设置合同验证上下文,您可能需要导入 ckb 模块来构建交易结构或计算哈希结果。 ckb-testtool crate 提供了 ckb 模块的重新导出。
示例
use ckb_testtool::context::Context;
use ckb_testtool::ckb_types::{
    bytes::Bytes,
    core::TransactionBuilder,
    packed::*,
    prelude::*,
};
use std::fs;
// max cycles of verification
const MAX_CYCLES: u64 = 10_000_000;
#[test]
fn test_basic() {
    // Init testing context
    let mut context = Context::default();
    let contract_bin: Bytes = fs::read("my_contract").unwrap().into();
    // deploy contract
    let out_point = context.deploy_cell(contract_bin);
    // prepare scripts and cell dep
    let lock_script = context
        .build_script(&out_point, Default::default())
        .expect("script");
    // prepare input cell
    let input_out_point = context.create_cell(
        CellOutput::new_builder()
            .capacity(1000u64.pack())
            .lock(lock_script.clone())
            .build(),
        Bytes::new(),
    );
    let input = CellInput::new_builder()
        .previous_output(input_out_point)
        .build();
    // outputs
    let outputs = vec![
        CellOutput::new_builder()
            .capacity(500u64.pack())
            .lock(lock_script.clone())
            .build(),
        CellOutput::new_builder()
            .capacity(500u64.pack())
            .lock(lock_script)
            .build(),
    ];
    let outputs_data = vec![Bytes::new(); 2];
    // build transaction
    let tx = TransactionBuilder::default()
        .input(input)
        .outputs(outputs)
        .outputs_data(outputs_data.pack())
        .build();
    let tx = context.complete_tx(tx);
    // run
    let cycles = context
        .verify_tx(&tx, MAX_CYCLES)
        .expect("pass verification");
    println!("consume cycles: {}", cycles);
}
依赖项
~18–49MB
~769K SLoC