
alexliesenfeld/httpmockhttpmock是一个功能丰富的HTTP模拟库,主要用于Rust应用的测试场景,同时支持独立模式部署。它允许开发者模拟HTTP服务的行为,以测试应用在不同HTTP响应下的表现。通过Docker镜像可快速部署独立模拟服务器,适用于多语言环境的系统测试或端到端测试,模拟各类外部HTTP API、数据存储或认证服务。
在Cargo.toml中添加:
toml[dev-dependencies] httpmock = "0.6"
rustuse httpmock::prelude::*; // 启动轻量级模拟服务器 let server = MockServer::start(); // 创建模拟规则 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("Привет"); }); // 发送测试请求(模拟应用代码) let response = isahc::get(server.url("/translate?word=hello")).unwrap(); // 验证模拟规则被调用 hello_mock.assert(); // 验证响应状态 assert_eq!(response.status(), 200);
bashdocker run -p 8080:8080 alexliesenfeld/httpmock
bashdocker run -p 9090:9090 -e HTTPMOCK_PORT=9090 alexliesenfeld/httpmock
bashdocker run -p 8080:8080 -v ./mocks:/mocks alexliesenfeld/httpmock --config /mocks
yamlversion: '3' services: httpmock: image: alexliesenfeld/httpmock ports: - "8080:8080" environment: - HTTPMOCK_PORT=8080 volumes: - ./mocks:/mocks command: --config /mocks
创建mocks/example.yaml文件:
yaml- name: hello_mock request: method: GET path: /translate query_params: word: hello response: status: 200 headers: content-type: text/html; charset=UTF-8 body: "Привет" delay: 100ms # 模拟100ms网络延迟
| 环境变量 | 描述 | 默认值 |
|---|---|---|
| HTTPMOCK_PORT | 服务器监听端口 | 8080 |
| HTTPMOCK_HOST | 绑定主机地址 | 0.0.0.0 |
| RUST_LOG | 日志级别(trace/debug/info/warn/error) | info |
MIT许可证。详情参见项目许可证。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务