Создание фиктивного сервера для юнит-тестирования в Ruby - PullRequest
1 голос
/ 09 сентября 2011

Я поддерживаю несколько драгоценных камней Ruby, которые обрабатывают удаленные файлы, используя net/http.

Моя текущая настройка модульного теста включает запуск сервера WEBrick методом setup, а затем его уничтожение в teardown.

def setup
  return if @server_thread
  @server_thread = Thread.new do
    s = WEBrick::HTTPServer.new(:Port => 12000, :DocumentRoot => www_root, :Logger => Log.new(nil, BasicLog::ERROR), :AccessLog => [])
    port = s.config[:Port]
    begin
      s.start
    ensure
      s.shutdown
    end
  end
end

С Ruby 1.9.2 и 1.9.3 я получаю кучу ошибок соединения - Errno::ECONNREFUSED: Connection refused - connect(2).Еще более расстраивает то, что они преходящи - иногда они случаются, иногда нет.Все, что я могу думать, это то, что WEBrick либо перегружен, либо не настроен должным образом.

Мне нужно иметь возможность загружать несколько статических файлов (в моем каталоге фикстур) по HTTP для тестирования этих гемов.Как лучше всего использовать фиктивный HTTP-сервер для тестирования Test::Unit?

1 Ответ

4 голосов
/ 09 сентября 2011

Я бы посмеялся над классом net/http для возврата содержимого статических файлов.Используйте внедрение зависимостей , чтобы тестируемый класс использовал макет во время выполнения модульного теста и net/http в производстве.

Вы также можете использовать webmock или fakeweb драгоценных камней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...