我正在编写一个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中工作,在那里没有联系到实际的端点?解决方案不需要特定于被破坏的框架,顺便说一句。
答案 0 :(得分:0)
在收到https://github.com/TannerRogalsky的一些优秀反馈后,如https://gist.github.com/TannerRogalsky/b56bc886811f8f0a9d2a所示,我决定为http请求编写自己的模拟库:https://github.com/chip/webmock。它处于早期阶段,但它至少是一个开始。我很感激能够对其他方法或Lua模块的回购或建议做出贡献。