是否有与Lua语言等效的Ruby WebMock?

时间:2014-01-31 16:02:59

标签: api lua mocking webmock lua-busted

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

-- users.lua

local http     = require("socket.http")
local base_url = 'http://example.com'
local api_key  = "secret"
local users    = {}

function users.info(user_id)
  local request_url = base_url .. '/users/' .. user_id .. "?api_key=" .. api_key
  print("Requesting " .. request_url)
  local response = http.request(request_url)
  print("Response " .. response)
  return response
end

return users

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

我有一个规范(使用busted框架),但它向API提出了实际请求:

-- spec/users_spec.lua 

package.path = "../?.lua;" .. package.path

describe("Users", function()
  it("should fetch the users info", function()
    local users = require("users")
    local s = spy.on(users, "info")
    users.info("chip0db4")
    assert.spy(users.info).was_called_with("chip0db4")
  end)
end)

我如何模拟这一点,就像WebMock如何在Ruby中工作,在那里没有联系到实际的端点?解决方案不需要特定于被破坏的框架,顺便说一句。

1 个答案:

答案 0 :(得分:0)

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