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

如何在Common LISP测试中Stub HTTP请求?求推荐相关工具

在Common Lisp测试中拦截网络请求并Stub响应的方案

专用HTTP Stub工具

Common Lisp社区有针对HTTP请求Stub的专用工具,功能类似你提到的WebMock、HTTPretty:

  • stub-http:可以启动本地Stub服务器,注册特定URL的响应规则,同时拦截所有外部网络请求。你可以为不同的请求方法(GET/POST等)、路径设置预设的状态码、响应体和HTTP头,测试代码发起的请求会被导向这个Stub服务器,不会触发真实网络调用。
  • drakma-mock:针对Common Lisp常用HTTP客户端Drakma的Mock库,直接Stub drakma:http-request 函数,为指定URL或请求参数设置返回值,同时阻止真实请求发送。

通用Mock库的常规用法

如果不需要专用HTTP Stub工具,通用Mock库也是测试网络请求代码的常用选择:

  • cl-mock:直接Mock HTTP客户端的核心请求函数,比如针对drakma:http-request,为特定参数(如目标URL、请求方法)设置预设返回值,还能验证函数的调用次数、参数是否符合预期。示例代码:
(cl-mock:with-mocks ()
  (cl-mock:answer (drakma:http-request "https://example.com/api")
                  (values "{\"status\": \"ok\"}" 200 nil nil))
  ;; 执行待测试的业务代码
  (assert (equal (your-api-calling-function) "{\"status\": \"ok\"}")))
  • mockingbird:另一款通用Mock库,支持为函数设置条件化的返回逻辑,同样可以用来Mock HTTP请求相关函数,阻断真实网络请求。

其他替代方案

  • 自建本地测试服务器:用Hunchentoot这类轻量HTTP框架快速搭建本地测试服务器,在测试前启动,将待测试代码的请求目标指向这个本地服务,提前配置好各个接口的响应内容。这种方式更贴近真实请求场景,适合复杂交互逻辑的测试。
  • 修改HTTP客户端配置:比如在Drakma中设置代理,将所有请求转发到本地Stub服务;或者在测试环境中直接覆盖HTTP客户端的请求逻辑,替换为预设的本地响应。

内容的提问来源于stack exchange,提问作者Everton J. Carpes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:15:45