24 个版本 (15 个稳定版)

新版本 21.4.0 2024 年 8 月 20 日
21.2.0 2024 年 7 月 16 日
20.3.4 2024 年 4 月 16 日
20.3.1 2024 年 2 月 23 日
0.9.4 2023 年 7 月 27 日

#124 in 魔法豆

Download history 57/week @ 2024-04-24 42/week @ 2024-05-01 83/week @ 2024-05-22 27/week @ 2024-05-29 5/week @ 2024-06-05 165/week @ 2024-06-12 81/week @ 2024-06-19 121/week @ 2024-07-03 116/week @ 2024-07-10 136/week @ 2024-07-17 33/week @ 2024-07-24 108/week @ 2024-07-31 23/week @ 2024-08-07

每月 344 次下载

Apache-2.0

20KB
295

Soroban 测试

包装 Soroban CLI 的测试框架。

提供了一种在本地沙箱中运行测试的方法;即将支持对 RPC 端点进行测试。

概述

  • TestEnv 是一个用于运行彼此隔离的测试的测试环境。
  • TestEnv::with_default 调用一个闭包,该闭包接收一个指向随机 TestEnv 的引用。
  • TestEnv::new_assert_cmd 为给定的子命令创建一个 assert_cmd::Command,并将当前目录设置为与 TestEnv 相同。
  • TestEnv::cmd 是一个通用函数,它从一个字符串中解析一个命令。请注意,然而,它使用 shlex 来标记字符串。这可能会对包含带有 " 的字符串的命令造成问题。例如,{"hello": "world"} 变成 {hello:world}。因此,建议使用 TestEnv::cmd_arr
  • TestEnv::cmd_arr 是一个泛型函数,它接受一个 &str 数组并将其直接传递给 clap。这是首选的方法,因为它确保没有字符串解析错误。
  • TestEnv::invoke 是一个方便的函数,用于使用 invoke 命令。

示例

use soroban_test::{TestEnv, Wasm};

const WASM: &Wasm = &Wasm::Release("soroban_hello_world_contract");
const FRIEND: &str = "friend";

#[test]
fn invoke() {
    TestEnv::with_default(|workspace| {
        assert_eq!(
            format!("[\"Hello\",\"{FRIEND}\"]"),
            workspace
                .invoke(&[
                    "--id",
                    "1",
                    "--wasm",
                    &WASM.path().to_string_lossy(),
                    "--",
                    "hello",
                    "--to",
                    FRIEND,
                ])
                .unwrap()
        );
    });
}

Crate 中的集成测试

目前,所有需要 RPC 服务器的测试都隐藏在 it 功能后面,在此处找到。为了允许 Rust-Analyzer 在 vscode 中查看测试,请修改 .vscode/settings.json。没有 RA,您无法跟踪定义,更重要的是,在运行测试之前无法看到错误。

依赖项

~55–76MB
~1.5M SLoC