#mocking #server #request #response #http-request #http-response

bin+lib mockser

可配置的测试和开发用模拟服务器

6 个版本

0.1.6 2024 年 5 月 20 日
0.1.4 2024 年 2 月 26 日

#188 in 测试

MIT 许可证

28KB
390

Mockser

Crates.io

可配置的测试和开发用模拟服务器。

该仓库包含了一个模拟服务器的实现,允许配置和处理模拟请求。服务器监听指定的主机和端口,并为配置模拟提供了一个 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&param2=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&param2=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