doc = Nokogiri::HTML(open(URL))
Luego de buscar un poco e intentar sin éxito con la gema fakeweb encontré webmock que sí me anduvo.
Agrego la gema al Gemfile:
group :test do
gem 'webmock'
end
Luego, en el setup de la clase a testear, configuro la url que voy a acceder con el resultado que deseo que traiga:
def setup
mock_file = Rails.root.join("test", "fixtures", "some_saved_website.html")
stub_request(:get, /http:\/\/www.some_web.com\/*/).
with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
to_return(:status => 200, :body => File.new(mock_file), :headers => {})
end
Funciona muy bien. Hace mock de todos los requests y si falla algún otro acceso te escribe el código necesario para mockear el mismo:
1) Error:
test_scrap_some_real_data(TestBlaBlaScrapper):
WebMock::NetConnectNotAllowedError: Real HTTP connections are disabled. Unregistered request: GET http://www.xxx.com/yyyy?o=2 with headers {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}
You can stub this request with the following snippet:
stub_request(:get, "http://www.xxx.com/Internet/yyyy?o=2").
with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
to_return(:status => 200, :body => "", :headers => {})
No hay comentarios.:
Publicar un comentario