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