You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

接手老员工代码后,如何创建不调用真实API的模拟集成测试?

无真实API依赖的模拟集成测试实现方案

1. 选择适配技术栈的模拟服务器工具

根据你的技术栈匹配对应的工具:

  • Java/跨语言场景:WireMock、MockServer,支持通过配置文件或代码定义请求响应规则
  • Python场景:用FastAPI快速搭建临时模拟服务,或配合pytest实现自定义模拟逻辑
  • Node.js场景:用Express搭建极简模拟服务,或Mockoon可视化配置API规则
  • 通用场景:Postman Mock Server,适合快速配置复杂多场景API

2. 改造代码的API地址配置

确保业务代码中的API地址可配置,避免硬编码。通过环境变量、配置文件或启动参数切换地址:

  • Java示例(application.properties):
    api.base.url=http://localhost:8080/mock-api
    
  • Python示例:
    import os
    API_BASE_URL = os.getenv("API_BASE_URL", "http://localhost:8080/mock-api")
    

无需修改业务逻辑,仅通过配置即可将请求路由到模拟服务器。

3. 定义模拟服务器的请求响应规则

完全复刻真实API的请求特征(方法、路径、请求头、请求体),覆盖所有业务场景:

  • 成功响应:匹配真实API的返回结构,返回符合业务逻辑的测试数据
  • 错误响应:模拟404、500、403等状态码及对应错误体,验证代码的异常处理逻辑
  • 边界场景:模拟空值、超长字段、特殊字符等请求,验证代码兼容性

以WireMock为例,创建映射文件mappings/user-get.json:

{
  "request": {
    "method": "GET",
    "urlPathPattern": "/mock-api/user/[0-9]+",
    "headers": {
      "Accept": { "equalTo": "application/json" }
    }
  },
  "response": {
    "status": 200,
    "headers": {
      "Content-Type": "application/json"
    },
    "jsonBody": {
      "id": "${request.urlSegments.[2]}",
      "name": "Mock User ${request.urlSegments.[2]}",
      "email": "mock-${request.urlSegments.[2]}@example.com"
    }
  }
}

该配置会匹配所有/mock-api/user/{id}的GET请求,动态返回对应ID的用户数据。

4. 执行模拟集成测试

启动模拟服务器后,直接运行原有集成测试用例:

  • 启动WireMock:java -jar wiremock-jre8-standalone-2.35.0.jar --port 8080
  • 运行测试:用JUnit、pytest、Jest等框架执行集成测试套件

测试逻辑与真实API测试完全一致,仅请求被路由到模拟服务器,不会调用真实接口。

5. 设置真实API测试的触发规则

在测试流程中加入前置校验:只有当所有模拟集成测试通过后,才允许切换到真实API地址执行测试。可在CI/CD脚本或测试配置中实现:

  • Shell脚本示例:
    # 执行模拟集成测试
    npm run test:mock-integration
    if [ $? -eq 0 ]; then
        # 测试通过,切换到真实API
        export API_BASE_URL=https://api.prod.example.com
        npm run test:real-integration
    else
        echo "模拟集成测试未通过,终止真实API测试"
        exit 1
    fi
    

内容的提问来源于stack exchange,提问作者Mr J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:01:12