38 个版本

0.7.0 2024 年 1 月 5 日
0.7.0-rc.12023 年 10 月 15 日
0.6.8 2023 年 7 月 5 日
0.6.7 2022 年 11 月 21 日
0.3.3 2019 年 10 月 3 日

#18 in 测试

Download history 28193/week @ 2024-04-08 32861/week @ 2024-04-15 35454/week @ 2024-04-22 32107/week @ 2024-04-29 35460/week @ 2024-05-06 45329/week @ 2024-05-13 46867/week @ 2024-05-20 49050/week @ 2024-05-27 51464/week @ 2024-06-03 48530/week @ 2024-06-10 52686/week @ 2024-06-17 52456/week @ 2024-06-24 46512/week @ 2024-07-01 51949/week @ 2024-07-08 63231/week @ 2024-07-15 73491/week @ 2024-07-22

236,464 每月下载量
138 crates 中使用

MIT 许可证

245KB
4.5K SLoC

httpmock

Rust 的 HTTP 模拟库。

Build codecov crates.io Mentioned in Awesome Rust

文档 · Crate · 报告错误 · 请求功能 · 变更日志

功能

  • 简单、表达性强、流畅的 API。
  • 许多内置辅助函数,便于请求匹配。
  • 并行测试执行。
  • 可扩展的请求匹配。
  • 完全异步的核心,提供同步和异步 API。
  • 高级验证和调试支持.
  • 网络延迟模拟。
  • 支持正则表达式匹配、JSON、serde、cookies 等。
  • 独立模式,附带相应的 Docker 镜像
  • 支持基于 YAML 文件的 模拟规范

入门

httpmock 添加到 Cargo.toml

[dev-dependencies]
httpmock = "0.7.0-rc.1"

然后您可以使用 httpmock 如下所示

use httpmock::prelude::*;

// Start a lightweight mock server.
let server = MockServer::start();

// Create a mock on the server.
let hello_mock = server.mock(|when, then| {
    when.method(GET)
        .path("/translate")
        .query_param("word", "hello");
    then.status(200)
        .header("content-type", "text/html; charset=UTF-8")
        .body("Привет");
});

// Send an HTTP request to the mock server. This simulates your code.
let response = isahc::get(server.url("/translate?word=hello")).unwrap();

// Ensure the specified mock was called exactly one time (or fail with a detailed error description).
hello_mock.assert();

// Ensure the mock server did respond as specified.
assert_eq!(response.status(), 200);

上面的示例将启动一个轻量级的 HTTP 模拟服务器,并将其配置为响应所有路径为 /translate 且查询参数为 word=helloGET 请求。相应的 HTTP 响应将包含文本主体 Привет

用法

请参阅 参考文档 以获取详细的 API 文档。

示例

您可以在httpmock 测试目录中找到示例。参考文档也包含了大量的示例。此外,还有一个在线教程

独立模拟服务器

您可以使用 httpmock 来运行一个独立的模拟服务器,该服务器在单独的进程中执行。Dockerhub上有可用的Docker镜像,可以帮助您快速开始。

独立模式允许您模拟许多API客户端的基于HTTP的API,不仅限于您的Rust测试内部的API,还包括运行在远程主机上的完全不同的程序。如果您想在需要模拟服务的系统或端到端测试中使用 httpmock(例如REST API、数据存储、身份验证提供者等),这尤其有用。

有关更多信息,请参阅文档

基于文件的模拟规范

为了方便起见,独立模式还允许您使用YAML文件进行模拟规范,因此您根本不需要使用Rust或其他任何编程语言。模拟规范文件的模式与 httpmock 的Rust API非常相似,因此可以在两者之间轻松切换。请在此处找到示例模拟规范文件

有关更多信息,请参阅文档

许可协议

httpmock 是免费软件:您可以在MIT公共许可证的条款下重新分发和/或修改它。

本程序的分发是为了希望它将是有用的,但没有任何保证;甚至没有关于其商业性或适用于特定目的的暗示保证。有关详细信息,请参阅MIT公共许可证。

依赖项

~13–28MB
~443K SLoC