0

我正在编写一个 Lua 模块,用于向公共 API 发出请求:

--users.lua

本地 http = 要求(“socket.http”)
本地 base_url = 'http://example.com'
本地 api_key = "秘密"
本地用户 = {}

函数 users.info(user_id)
  本地 request_url = base_url .. '/users/' .. user_id .. "?api_key=" .. api_key
  打印(“请求” .. request_url)
  本地响应 = http.request(request_url)
  打印(“响应” ..响应)
  返回响应
结尾

回头客

这可行,但我想使用 TDD 来完成整个 API 包装器的编写。

我有一个可以工作的规范(使用破坏的框架),但它向 API 发出了实际请求:

-- 规范/users_spec.lua

package.path = "../?.lua;" .. 包路径

描述(“用户”,函数()
  it("应该获取用户信息", function()
    本地用户 = 要求(“用户”)
    本地 s = spy.on(用户,“信息”)
    users.info("chip0db4")
    assert.spy(users.info).was_call_with("chip0db4")
  结尾)
结尾)

我如何模拟它,就像WebMock在 Ruby 中的工作方式一样,其中不联系实际端点? 解决方案不需要特定于破坏的框架,顺便说一句。

4

1 回答 1

0

在收到来自https://github.com/TannerRogalsky的一些优秀反馈后,如下所示https://gist.github.com/TannerRogalsky/b56bc886811f8f0a9d2a,我决定为 http 请求编写自己的模拟库:https://github .com/chip/webmock。它处于非常早期的阶段,但至少是一个开始。我将不胜感激对 repo 的贡献或对其他方法或可用 Lua 模块的建议。

于 2014-06-29T02:04:51.923 回答