Shamrock
Бывают случаи, когда WebMock’а недостаточно, или же вы просто не любите stub’ы и хотите, чтобы тест делал реальный http запрос. В таких случаях вы можете написать свой простенький http сервер или выбрать один из существующих, и стартовать его на время тестов(а). А можно взять готовую библиотеку - Shamrock.
Она принимает на вход любое Rack приложение и запускает его в отдельном треде с помощью WEBrick’а. Порт можно задать самому. В противном случае будет использован первый свободный.
def setup
json = load_fixture("service/200.json")
my_rack_app = proc {|env| [200, {"Content-Type" => "application/json"}, [json]]}
@service = Shamrock::Service.new(my_rack_app)
@service.start
@service.uri # => #<URI::HTTP http://localhost:54321>
end
def teardown
@service.stop
end
Доступные параметры у Service#new:
handler
- обработчик, который запускает Rack приложение (по умолчанию Rack::Handler::WEBrick)port
- портmonitor
- монитор, который блокируется до тех пор, пока сервер не стартанет
Вообще, либа написана хорошо, и выполняет именно то, что от нее ждут. Правда популярности ей это не принесло :)