1 个不稳定版本
0.1.1 | 2019年9月22日 |
---|---|
0.1.0 |
|
#7 in #abandoned
在 4 个 crate 中使用
1KB
httpmock
Rust 的 HTTP 模拟库。
文档 · Crate · 报告错误 · 请求功能 · 变更日志 · 支持此项目
功能
- 简单、直观、流畅的 API。
- 提供许多内置辅助函数,以轻松进行请求匹配(正则表达式、JSON、serde、cookies 等)。
- 并行测试执行。
- 可扩展的请求匹配。
- 完全异步的核心,具有同步和异步 API。
- 高级验证和调试支持(包括实际和预期 HTTP 请求值之间的 diff 生成)
- 故障和网络延迟模拟。
- 支持正则表达式、JSON、serde、cookies 等。
- 具有配套 Docker 镜像 的独立模式。
- 支持使用 YAML 文件进行 模拟配置。
入门指南
将 httpmock
添加到 Cargo.toml
[dev-dependencies]
httpmock = "0.7.0"
然后您可以按如下方式使用 httpmock
use httpmock::prelude::*;
// Start a lightweight mock server.
let server = MockServer::start();
// Create a mock on the server.
let 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).
mock.assert();
// Ensure the mock server did respond as specified.
assert_eq!(response.status(), 200);
上述示例将启动一个轻量级的 HTTP 模拟服务器,并配置它以响应路径为 /translate
,查询参数为 word=hello
的所有 GET
请求。相应的 HTTP 响应将包含文本主体 Привет
。
如果请求失败,httpmock
将显示详细的错误描述,包括预期和实际 HTTP 请求之间的 diff
使用方法
请参阅 参考文档 以获取详细的 API 文档。
示例
您可以在httpmock
测试目录中找到示例。参考文档也包含大量示例。还有在线教程。
独立模拟服务器
您可以使用httpmock
运行一个独立模拟服务器,它在一个单独的进程中执行。您可以在Dockerhub上找到Docker镜像,以便快速开始。
独立模式允许您模拟基于HTTP的API,适用于许多API客户端,不仅限于您Rust测试中的客户端,还可以模拟远程主机上运行的不同程序。如果您想在需要模拟服务(如REST API、数据存储、认证提供者等)的系统或端到端测试中使用httpmock
,这尤其有用。
有关更多信息,请参阅文档
许可证
httpmock
是免费软件:您可以在MIT公共许可证的条款下重新分发和/或修改它。
本程序分发的目的是希望它是有用的,但没有任何保证;甚至没有关于适销性或特定用途适用性的暗示性保证。有关详细信息,请参阅MIT公共许可证。