bneumann/mock-api-bundle

用于模拟外部API响应的Symfony扩展包

dev-main 2024-08-01 19:47 UTC

This package is auto-updated.

Last update: 2024-10-01 20:10:37 UTC


README

Mock API Bundle 是一个为测试目的而设计的 Symfony 扩展包,可以帮助您模拟 API 请求。它允许您使用 YAML 配置文件定义特定请求的模拟响应,从而使编写集成测试变得更加容易,无需依赖于外部服务。这在测试第三方 API 集成或模拟测试中的不同场景时特别有用。

此功能仅在测试中有效,正常 HTTP 客户端行为不受影响。

功能

  • 基于 URL 和请求体模拟 HTTP 请求。
  • 在 YAML 文件中定义模拟响应。
  • 无缝集成到 Symfony 的 HTTP 客户端。
  • 服务装饰以确保仅在测试环境中使用。

安装

  1. 使用 Composer 将扩展包添加到您的 Symfony 项目中
composer require bneumann/mock-api-bundle --dev
  1. 在您的 config/bundles.php 文件中注册扩展包
return [
    // ...
    Bneumann\MockApiBundle\BneumannMockApiBundle::class => ['test' => true],
];
  1. (可选) 在您的 config/packages/test 目录中创建一个 bneumann_mock_api.yaml 文件来配置扩展包
bneumann_mock_api:
    mocks_path: tests/mocks

使用方法

要开始使用 Mock API Bundle,您需要在 mocks_path 配置选项指定的目录(默认为 tests/mocks)中创建一个或多个模拟配置文件。该文件应包含一系列模拟响应,每个响应都有一个 URL、方法以及可选的 POST 请求体和响应数据(状态码和要返回的正文)。

以下是一个模拟配置文件的示例

mocks:
    - url: https://example.com/api/users
      method: GET
      response:
          status: 200
          body:
              [
                  {
                      "id": 1,
                      "name": "John Doe"
                  },
                  {
                      "id": 2,
                      "name": "Jane Doe"
                  }
              ]
    - url: https://example.com/api/users
      method: POST
      request:
          body:
              name: Alice
      response:
          status: 201
          body:
              {
                  "id": 3,
                  "name": "Alice"
              }

您可以将正文或响应以及请求声明为 JSON 或 YAML。上面的示例中,为了演示目的,使用了 JSON 作为响应,YAML 作为请求。

贡献

欢迎贡献!请随时提交 Pull Request 或打开 Issue 以帮助改进此扩展包。

许可证

此扩展包是开源软件,受 MIT 许可证 许可。