什么是 Mock 模拟接口?
在 Java 开发中,Mock(模拟)接口用于在不依赖真实后端服务的情况下,模拟 API 响应。 这在前后端分离开发、单元测试或第三方服务不可用时非常有用。
常见 Java Mock 工具
- Mockito:主要用于单元测试中的对象行为模拟。
- WireMock:可启动独立 HTTP 服务器,模拟 RESTful 接口。
- Spring Boot + @RestController:快速编写临时 Mock 接口。
- JsonServer / Mockoon(非 Java):轻量级外部 Mock 工具,常配合 Java 前端使用。
使用 Spring Boot 快速创建 Mock 接口示例
以下是一个简单的 Mock 接口代码:
@RestController
public class MockController {
@GetMapping("/api/user/{id}")
public ResponseEntity<Map<String, Object>> getUser(@PathVariable Long id) {
Map<String, Object> user = new HashMap<>();
user.put("id", id);
user.put("name", "Mock User " + id);
user.put("email", "user" + id + "@example.com");
return ResponseEntity.ok(user);
}
}
启动应用后,访问 http://localhost:8080/api/user/123 即可获得模拟 JSON 数据。
使用 WireMock 独立 Mock 服务
WireMock 可以通过 JSON 配置文件定义请求与响应,无需写 Java 代码:
{
"request": {
"method": "GET",
"url": "/api/products"
},
"response": {
"status": 200,
"headers": { "Content-Type": "application/json" },
"jsonBody": [
{ "id": 1, "name": "Mock Product" }
]
}
}
启动 WireMock 后,该接口即可被前端或测试脚本调用。
最佳实践建议
- 为不同环境(开发/测试)配置不同的 Mock 策略。
- 保持 Mock 数据结构与真实接口一致,避免集成时出错。
- 使用随机数据生成器(如 Java Faker)使 Mock 更真实。
- 将 Mock 配置纳入版本控制,便于团队共享。