genesis/mock-api

开发和运行针对模拟API的自动化测试。

1.2.1 2020-08-08 20:52 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