6 个版本
0.1.6 | 2024 年 5 月 20 日 |
---|---|
0.1.4 | 2024 年 2 月 26 日 |
#188 in 测试
28KB
390 行
Mockser
可配置的测试和开发用模拟服务器。
该仓库包含了一个模拟服务器的实现,允许配置和处理模拟请求。服务器监听指定的主机和端口,并为配置模拟提供了一个 HTTP 端点。
服务器使用 Axum 框架来处理 HTTP 请求和响应。它维护一个状态,其中包含模拟的配置,这些配置存储在一个 HashMap 中。
服务器还监听一个单独的端口以接收配置请求,允许动态更新模拟配置。
要配置模拟,请向 /configure
端点发送 POST 请求,并将模拟配置放在请求体中。模拟配置应包括请求 URI、方法、正文和头信息,以及响应代码、正文和头信息。
服务器根据请求路径将传入的请求与配置的模拟进行匹配。如果找到匹配的模拟,它将使用模拟的响应代码、正文和头信息构建一个 HTTP 响应。如果没有找到匹配的模拟,它将返回 404 未找到响应。
您可以通过运行测试来查看服务器的作用,运行 hurl tests/test.hurl
。
安装
cargo install mockser
docker run --rm -p 3000:3000 -p 3001:3001 daxart/mockser
使用
POST http://127.0.0.1:3001/configure
{
"name": "Test request",
"request": {
"path": "/test",
"method": "POST",
"query": "param1=value1¶m2=value2",
"headers": {
"content-type": "application/json"
}
},
"response": {
"code": 201,
"body": "{\"name\":\"Test response\"}",
"headers": {
"content-type": "application/json",
"x-custom-header": "custom-value"
}
}
}
HTTP 201
POST http://127.0.0.1:3000/test?param1=value1¶m2=value2
Content-Type: application/json
{
"name": "Test request"
}
HTTP 201
[Asserts]
header "Content-Type" == "application/json"
header "X-Custom-Header" == "custom-value"
body == "{\"name\":\"Test response\"}"
配置
服务器可以使用环境变量进行配置。
名称 | 类型 | 默认值 | 选项 |
---|---|---|---|
MOCKSER_HOST | 字符串 | '0.0.0.0' | |
MOCKSER_PORT | 数字 | 3000 | |
MOCKSER_CONFIG_PORT | 数字 | 3001 | |
MOCKSER_INITIAL_CONFIGS | 路径 | 无 | |
MOCKSER_LOG | 字符串 | 'info' | ... |
MOCKSER_LOG_STYLE | 字符串 | 'auto' | 自动、始终、从不 |
MOCKSER_LOG_FORMAT | 字符串 | 'human' | 人类、JSON |
依赖项
~12–22MB
~318K SLoC