Rust in Everything
基于 axum 0.8.9

测试

Router<()> 实现了 Service<Request<B>>,poll_ready 永远就绪、错误类型是 Infallible,所以测试一个 axum 应用可以不监听端口,造一个 Request 交给它,拿回 Response。这一部分只有一章,讲这种测试的几种写法、它和线上运行的差别,以及 axum 自己的测试为什么反而起了真实的服务器。

  1. 不起服务器测路由:oneshot、as_service、into_service 三种调用方式;用 BodyExt::collect 或 axum::body::to_bytes 读响应;ConnectInfo 在测试里用 MockConnectInfo 代替,真实连接信息优先;axum 的 TestClient 怎样把一个服务挂到 127.0.0.1:0 上再用 reqwest 访问。

tower 卷的 不起服务器的测试 讲过本站的测试怎么用 oneshot,以及没调用 with_state 的 Router 每个请求重套 layer 的问题;这里不重复。

💬 关联讨论

发起讨论
加载中...