Mocklantis:现代 API Mocking 轻松实现
Source: Dev.to

依赖的隐藏成本:为什么 Mock(模拟)很重要
使用微服务架构意味着要与依赖共存。你的服务会调用另一个服务,那服务又会调用另外三个服务,在这条链的某处,可能还有支付网关、通知服务,甚至是带有严格速率限制的第三方 API。
当一切都正常运行时,生活很美好。但这里有个没人愿意问的问题:当它们不可用时会怎样?
- 如何测试超时场景?
- 如何模拟支付服务返回 503?
- 在真正需要之前,如何确认你的重试逻辑真的有效?
这些问题让人不舒服,因为诚实的答案往往是“我们不做”或“我们只能抱着希望”。
我们谈论不足的问题
在微服务开发中,有一些摩擦点会拖慢所有人,却很少得到妥善解决。
依赖阻碍进度。 你的服务已经准备好,但你依赖的服务还没准备好。也许是其他团队还在构建它;也许是受沙箱限制的第三方 API;也许是只能在生产环境正常工作的支付网关。无论原因是什么,你都在等待超出自己控制范围的东西。
单元测试产生虚假信心。 测试通过。到处都是绿色对勾。但通过的单元测试只说明你的代码在隔离环境下——使用了行为完全符合你编写的模拟接口——能够工作。真实服务并不是这样。它们会超时,返回意外响应,甚至在周日凌晨 3 点崩溃。
模拟失败比实现功能更难。 你需要验证下游服务返回 503 时会发生什么,测试断路器,并确认回退逻辑有效。创建这些条件的过程往往让团队放弃,寄希望于监控在生产环境捕获问题。
每个人的模拟方式都不同。 有的开发者硬编码 JSON 响应;有的写一个小型 Express 服务器;还有人使用带有 YAML 配置的 CLI 工具。预发布环境被四个团队共享且经常出故障。“在我的机器上可以工作”成了团队的座右铭。
这些并非罕见情况。对大多数后端团队来说,这就是周二的常态。
不仅仅是微服务
依赖问题并非微服务架构独有。只要两个系统需要相互通信,就会出现这种情况。
- 前端团队在等待后端 API 完成。
- 移动应用因服务器端点尚未部署而受阻。
- 集成项目因第三方系统的速率限制或沙箱限制而停滞。
模式相同:你的工作已经完成,但因为其他东西不可用而无法验证。阻塞的不是你的代码,而是外部因素。
这正是模拟(mocking)变得必不可少的地方——不是可有可无的加分项,而是软件构建与测试的根本环节。
为什么 Mock(模拟)声名不佳
模拟的概念很简单:创建假服务返回可预测的响应,用它们测试代码,并模拟任何你需要的场景。
理论上,它是完美的解决方案。实际上,大多数团队都会回避它。
传统的模拟需要配置文件(YAML 或 JSON)、CLI 命令以及学习另一套工具语法。每次更改响应都必须重启服务器或重新加载配置。
“你已经写完特性,已经写好单元测试。现在还要再搭建一套环境来模拟本该由别人完成的服务?”
这种摩擦感让团队宁愿在不稳定的预发布环境上测试,或直接跳过集成测试。两者都不好,但相较于与 mock‑server 配置“搏斗”,它们看起来更实际。
Mocklantis 改变了这一切。
Mocklantis 是一款免费桌面应用,用于创建 mock 服务器。它可在 macOS、Windows 和 Linux 本地运行,支持 HTTP/REST 端点、WebSocket 连接、Server‑Sent Events(服务器发送事件)以及 webhook——全部集中在一个应用里。
它与众不同之处在于使用体验:
- 无需配置文件。
- 无需 CLI 命令。
- 无需学习 YAML 架构。
打开应用,创建服务器,添加端点,立即开始测试。更改即时生效——无需重启、无需重建。一切都是可视化且即时的。把“我想测试这个场景”和“我正在测试这个场景”之间的距离从数小时缩短到几秒。
Mocklantis 实际使用
工作流非常直观:
-
打开应用。
-
在 8080 端口创建一个服务器。
-
添加一个端点,例如:
POST /payments/process -
输入 JSON 响应并设置状态码。完成。该端点立即上线,你的服务可以立刻调用。
测试超时处理 – 添加延迟;更改即时生效。
测试错误场景 – 将状态码改为 503,观察服务的响应。
动态数据
Mocklantis 支持模板变量——每次请求都会重新生成的 UUID、时间戳、电子邮件、姓名以及自定义模式。内置十四种不同的随机变量类型。
WebSockets
Mocklantis 提供三种 WebSocket 模式:
- 会话式 – 请求‑响应模式。
- 流式 – 持续数据流。
- 触发式流 – 客户端消息触发一系列响应(非常适合 AI 风格的交互)。
Server‑Sent Events(SSE)
配置事件,设置间隔,定义连接时的消息——非常适合在 AI 应用中测试逐 token 流式输出。
Webhooks
当某个端点被调用时,Mocklantis 可以向其他 URL 发送 HTTP 请求,支持可配置的认证、重试逻辑和延迟。
所有操作都是可视化、即时的,无需编写自定义服务器代码。
小功能,大影响
有些能力听起来微不足道,直到你真的需要它们。Mocklantis 把这些细节做到位。
- 实时更新,无需重启 – 在服务运行时修改响应、添加延迟、切换状态码。
- 自动持久化 – 每次更改都会立即保存(500 ms 防抖);关闭应用后,一切保持原样。
- 实时请求日志 – 查看每一次请求,包括头部、主体和时间戳。
- 代理模式 – 对部分端点进行 mock,其他端点转发到真实服务,既能隔离特定依赖,又能保留整体栈。
- 随处导入 – 粘贴 cURL 命令、导入 OpenAPI 规范,或加载
.mock文件。 - 仅本地运行 – 所有操作都在 localhost 完成;无需云账号,数据不离开机器,也不必担心敏感测试数据被记录到别处。
单独来看这些功能并不革命,但它们共同消除了阻止团队进行有效测试的摩擦。
摩擦问题
开发者工具往往遵循一个模式:功能越强大,复杂度越高——学习曲线更陡、文档更厚、Stack Overflow 问题更多。Mocklantis 通过一个简单的可视化界面,提供强大的模拟能力,且不需要代码、不需要配置文件,也不依赖外部服务,从而颠覆了这一规律。结果是,开发者可以把更少的时间花在与工具的斗争上,更多的时间用于构建可靠的软件。