我有一个我正在写的lua模块,用于向公共API提出请求:
-users.lua本地http = require(" socket.http")local base_url ='http://example.com'本地api_key ="秘密"本地用户= {}功能用户。Info(user_id) local request_url = base_url ..'/user/'.. user_id .."?api_key =" .. api_key 打印("请求" .. request_url) 本地响应= http.request(request_url) 打印("响应" ..响应) 返回响应结尾返回用户
这有效,但我想使用TDD来完成整个API包装。
我有一个有效的规格(使用破坏的框架),但它向API提出了实际请求:
- spec/users_spec.luapackage.path =" ../?..lua;"..包装描述("用户",function() 它("应该获取用户信息",function() 本地用户= require("用户") local s = spy.on(用户," info") users.info(" chip0db4") assert.spy(users.info).was_called_with(" chip0db4") 结尾)结尾)
我该如何模拟这一点,就像在Ruby中网络货物的工作方式一样,在不联系实际端点?该解决方案不需要特定于破产的框架,BTW。<<<<<<<<<<
从https://github.com/tannerrogalsky收到一些出色的反馈后,如下所示http请求的模拟库:https://github.com/chip/webmock。它已经是很早的阶段,但至少是一个开始。我感谢对其他方法或LUA模块的贡献或建议。