genesis / mock-api
开发和运行针对模拟API的自动化测试。
Requires
- php: ~7.1
- ext-curl: *
- react/http: ~0.8
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-15 16:09:51 UTC
README
有一个依赖于API的应用程序,但测试负担太重?使用此包替换您的API,并在运行时模拟请求。
如何安装
composer require genesis/mock-api
make -f ./vendor/genesis/mock-api/Makefile build
make mockapi-install
启动 mock-api
make mockapi-up
测试模拟API是否正在运行
curl http://0.0.0.0:8989/alive
停止 mock-api
make mockapi-down
在生成的Makefile中查找更多命令。
静态模拟
您可以将您的静态路由(在启动模拟API时即可使用的路由)添加到staticMocks文件夹中。数据格式定义如下,并已存在示例请求。
动态模拟
要模拟请求,请使用mockData json将模拟请求发送到/mocks。示例模拟请求
# POST /mocks { "mockData": { "url": "/user/abc123", "get": [{ "body": { "id": "abc123", "name": "Wahab Qureshi" } }] } }
您可以使用动态模拟覆盖静态模拟。清除模拟将使其恢复为静态模拟。
完整的模拟数据选项
{
"mockData": {
"url": "/user/abc123",
"get": [{
"with": "/abc123/",
"response_code": 301,
"headers": {"lola": "123", "baby boo": "dudu"},
"body": {
"id": "abc123",
"name": "Wahab Qureshi"
},
"proxy": {
"url": "http://google.com",
"headers": {
"app-token": "88374783847"
}
},
"consecutive_responses": [{
"response_code": 205,
"body": {
"id": "abc123",
"name": "Wahab Qureshi"
}
}, {
"response_code": 500,
"body": "internal server error"
}]
}]
}
}
mockData (object):包含模拟请求信息。
mockData.url (string):要模拟的URL,可以是现有的静态模拟URL。
mockData.<METHOD> ([]object):要模拟的URL的方法。
mockData.<METHOD>.with (?string):可选地应用于URL的正则表达式模式。
mockData.<METHOD>.response_code (?int):可选地返回的响应代码。
mockData.<METHOD>.headers (?object):要返回的头部。
mockData.<METHOD>.body (mixed):响应内容。
mockData.<METHOD>.consecutive_responses (?[]object):在连续调用中逐个返回。支持response_code、headers和body。
mockData.<METHOD>.proxy (?object):通过另一个URL代理响应。
查看模拟端点
通过访问/mocks查看现有的模拟请求
清除动态模拟
要清除所有动态模拟,请发送GET请求到/mocks?purge=true
开发
运行测试只需运行behat测试
./vendor/bin/behat