1 个不稳定版本

0.1.1 2019年9月22日
0.1.0 2019年9月17日

#7 in #abandoned


4 个 crate 中使用

MIT 许可证

1KB

httpmock

Rust 的 HTTP 模拟库。

Build codecov crates.io Mentioned in Awesome Rust

文档 · 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

colored-diff.png

使用方法

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

示例

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

独立模拟服务器

您可以使用httpmock运行一个独立模拟服务器,它在一个单独的进程中执行。您可以在Dockerhub上找到Docker镜像,以便快速开始。

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

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

许可证

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

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

无运行时依赖