38 个版本
0.7.0 | 2024 年 1 月 5 日 |
---|---|
0.7.0-rc.1 | 2023 年 10 月 15 日 |
0.6.8 | 2023 年 7 月 5 日 |
0.6.7 | 2022 年 11 月 21 日 |
0.3.3 | 2019 年 10 月 3 日 |
#18 in 测试
236,464 每月下载量
在 138 crates 中使用
245KB
4.5K SLoC
httpmock
Rust 的 HTTP 模拟库。
文档 · 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=hello
的 GET
请求。相应的 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