1 个不稳定版本
0.1.0 | 2021 年 12 月 9 日 |
---|
#1269 in 编码
22KB
171 行
restest
Rust 中 REST API 的黑盒集成测试。
此包提供了 assert_api
宏,允许根据特定的请求声明式地测试服务器发出的响应是否正确。
示例
#![feature(assert_matches)]
use serde::{Deserialize, Serialize};
restest::port! { 8080 }
restest::assert_api! {
POST "/user",
PostUser {
year_of_birth: 2000,
} => User {
year_of_birth: 2000,
..
}
}
#[derive(Debug, Serialize)]
struct PostUser {
year_of_birth: usize,
}
#[derive(Debug, Deserialize)]
struct User {
year_of_birth: usize,
id: Uuid
}
编写测试
port
宏设置请求必须运行的端口。
测试以常规 Rust 测试编写(即:带有 #[test]
注释的函数)。由于我们使用异步代码,必须编写异步测试,可能使用 #[tokio::test]
。
具体来说,可以使用 assert_api
宏来查询服务器 API 并分析其响应。
运行测试
在运行 cargo test
时,服务器必须在后台运行。
所需的工具链
nightly
功能允许 assert_api
宏扩展为针对 nightly 特定的代码。这提供了以下功能
- 当请求体与预期模式不匹配时,提供更好的 panic 信息(需要
assert_matches
), - 能够在响应体中重用匹配的变量(需要
let_else
) (仍在开发中)。
必须使用以下两行在 crate 根目录下添加这两个功能
#![feature(assert_matches)]
#![feature(let_else)]
行为准则
我们有一份行为准则,以便创造一个更加愉快和工作的社区环境。请参阅 CODE_OF_CONDUCT 文件以获取更多详细信息。
许可
在以下任一许可下许可
- Apache 许可证第 2 版 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
根据您的选择。
双重 MIT/Apache2 许可证更为宽松。
依赖项
~4–17MB
~251K SLoC