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日

#8HTTP服务器

Download history 12516/week @ 2024-05-03 11952/week @ 2024-05-10 12198/week @ 2024-05-17 12333/week @ 2024-05-24 15659/week @ 2024-05-31 14352/week @ 2024-06-07 16456/week @ 2024-06-14 16856/week @ 2024-06-21 15542/week @ 2024-06-28 17936/week @ 2024-07-05 16721/week @ 2024-07-12 16813/week @ 2024-07-19 17946/week @ 2024-07-26 17758/week @ 2024-08-02 18998/week @ 2024-08-09 16507/week @ 2024-08-16

74,266 每月下载量
用于 33 crates

MIT 许可证

310KB
6.5K SLoC

Axum Test

为基于Axum构建的应用程序提供简单的端到端测试
包括REST和WebSockets

crate docs


使用此库,您可以在请求中托管应用程序,并对它进行查询。然后解码响应,并断言返回的内容。

  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 crateassert_* 函数的输出。
  • yaml 默认关闭,添加了对发送、接收和断言 yaml内容 的支持。
  • msgpack 默认关闭,添加了对发送、接收和断言 msgpack内容 的支持。
  • shuttle 默认关闭,添加了对从 shuttle_axum::AxumService 构建一个 TestServer 的支持,用于与 Shuttle.rs 一起使用。
  • typed-routing 默认关闭,添加了对来自 axum-extraTypedPath 的支持。
  • ws 默认关闭,增加对 WebSockets 的支持。

示例

您可以在 /examples 文件夹 中找到编写测试的示例。这些包括

请求构建功能

TestServer 上查询您的应用程序支持所有常见的请求构建。

  • 使用 Serde 序列化和反序列化 Json 和表单内容
  • 设置和读取 Cookie
  • 访问设置和读取头信息
  • 读取状态码和断言
  • 断言定义您期望返回的内容
  • 升级连接以用于 WebSockets

还包括

  • 保存返回的 Cookie 以供未来请求使用
  • 设置头信息和查询参数以供所有 TestRequests 使用
  • 可选地使用真实网络服务器运行请求
  • 自动状态断言以检查请求始终成功或失败
  • 美化断言输出
  • Axum Extra 的类型路由

贡献

向所有帮助过的人表示衷心的感谢!

contrib.rocks 制作。

依赖关系

~9–21MB
~312K SLoC