2014-01-31 4 views
0

У меня есть модуль Lua Я пишу для создания запросов к общественному API:Есть ли эквивалент Ruby WebMock для языка Lua?

 
-- 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

После получения отличной обратной связи от https://github.com/TannerRogalsky, как показано здесь https://gist.github.com/TannerRogalsky/b56bc886811f8f0a9d2a, я решил написать свою собственную насмешливую библиотеку для http-запросов: https://github.com/chip/webmock. Это на самом раннем этапе, но это, по крайней мере, начало. Я был бы благодарен за вклад в репо или предложение на другие подходы или модули Lua.