Существует ли эквивалент Ruby WebMock для языка Lua?

У меня есть модуль Lua, который я пишу для отправки запросов в публичный API:

- users.lua

локальный http     = require("socket.http")
local base_url = 'http://example.com'
local api_key  = "secret"
локальные пользователи = {}

функция users.info(user_id)
  local request_url = base_url .. '/users/' .. user_id .. "?api_key=" .. api_key
  печать ("Запрос".. request_url)
  локальный ответ = http.request(request_url)
  печать ("Ответ".. ответ)
  обратный ответ
конец

возвращать пользователей

Это работает, но я бы хотел использовать TDD для завершения написания всей оболочки API.

У меня есть спецификация (с использованием Busted Framework), которая работает, но она делает фактический запрос к API:

- spec/users_spec.lua 

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

описать ("Пользователи", функция ()
  это ("должен получить информацию о пользователях", функция ()
    локальные пользователи = требуют ("пользователи")
    local s = spy.on(пользователи, "информация")
    users.info("chip0db4")
    assert.spy(users.info).was_called_with("chip0db4")
  конец)
конец)

Как мне это сделать, так же, как работает WebMock в Ruby, где с реальной конечной точкой не связываются? Решение не должно быть специфичным для Busted Framework, кстати.

1 ответ

Решение

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

Другие вопросы по тегам