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 |
|
#124 in 魔法豆
每月 344 次下载
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