62个稳定版本 (13个主要版本)
新 15.6.0 | 2024年8月23日 |
---|---|
15.3.0 | 2024年7月6日 |
14.10.0 | 2024年5月28日 |
14.7.0 | 2024年3月29日 |
2.0.0 | 2023年1月17日 |
#8 在 HTTP服务器
74,266 每月下载量
用于 33 crates
310KB
6.5K SLoC
使用此库,您可以在请求中托管应用程序,并对它进行查询。然后解码响应,并断言返回的内容。
use ::axum::Router;
use ::axum::routing::get;
use ::axum_test::TestServer;
async fn get_ping() -> &'static str {
"pong!"
}
#[tokio::test]
async fn it_should_get() {
// Build an application with a route.
let app = Router::new()
.route("/ping", get(get_ping));
// Run the application for testing.
let server = TestServer::new(app).unwrap();
// Get the request.
let response = server
.get("/ping")
.await;
assert_eq!(response.text(), "pong!");
}
TestServer
可以直接使用模拟网络针对您的应用程序运行请求,或者应用程序可以在随机端口上运行(使用实际网络请求)。在这两种情况下,允许在测试中并行运行多个服务器。
可以通过选择要使用的 transport
来在 TestServerConfig
中更改此行为。
Axum 兼容性
Axum Test 需要 Axum 的最新版本(0.7)。
Axum 版本 | Axum Test 版本 |
---|---|
0.7 (最新) | 14, 15+ (最新) |
0.6 | 13.4.1 |
Crates功能
以下是到目前为止可以启用的所有功能的列表
all
默认关闭,启用以下所有功能。pretty-assertions
默认开启,使用 pretty assertions crate 为assert_*
函数的输出。yaml
默认关闭,添加了对发送、接收和断言 yaml内容 的支持。msgpack
默认关闭,添加了对发送、接收和断言 msgpack内容 的支持。shuttle
默认关闭,添加了对从shuttle_axum::AxumService
构建一个TestServer
的支持,用于与 Shuttle.rs 一起使用。typed-routing
默认关闭,添加了对来自 axum-extra 的TypedPath
的支持。ws
默认关闭,增加对 WebSockets 的支持。
示例
您可以在 /examples 文件夹 中找到编写测试的示例。这些包括
- 一个简单的 REST Todo 应用程序
- 使用 Shuttle 的 REST Todo 应用程序
- 一个 WebSocket ping pong 应用程序,可以发送上下请求
- 一个简单的 WebSocket 聊天应用程序
请求构建功能
在 TestServer
上查询您的应用程序支持所有常见的请求构建。
- 使用 Serde 序列化和反序列化 Json 和表单内容
- 设置和读取 Cookie
- 访问设置和读取头信息
- 读取状态码和断言
- 断言定义您期望返回的内容
- 升级连接以用于 WebSockets
还包括
- 保存返回的 Cookie 以供未来请求使用
- 设置头信息和查询参数以供所有 TestRequests 使用
- 可选地使用真实网络服务器运行请求
- 自动状态断言以检查请求始终成功或失败
- 美化断言输出
- Axum Extra 的类型路由
贡献
向所有帮助过的人表示衷心的感谢!
由 contrib.rocks 制作。
依赖关系
~9–21MB
~312K SLoC