Pregunta

Me gustaría especificar una URL base para que no tenga que especificar siempre URL absolutas. ¿Cómo puedo especificar una URL base para que la mecanización use?

¿Fue útil?

Solución

Para lograr la respuesta previamente ofrecida con Webrat, puede hacer lo siguiente, por ejemplo, en su pepino env.rb:

require 'webrat'

Webrat.configure do |config|
  config.mode = :mechanize
end

World do
  session = Webrat::Session.new
  session.extend(Webrat::Methods)
  session.extend(Webrat::Matchers)
  session.visit 'http://yoursite/yourbasepath/'
  session
end

Para que sea más robusto, como para usar en diferentes entornos, podría hacer:

ENV['CUCUMBER_HOST'] ||= 'yoursite'
ENV['CUCUMBER_BASE_PATH'] ||= '/yourbasepath/'

# Webrat
require 'webrat'

Webrat.configure do |config|
  config.mode = :mechanize
end

World do
  session = Webrat::Session.new
  session.extend(Webrat::Methods)
  session.extend(Webrat::Matchers)
  session.visit('http://' + ENV['CUCUMBER_HOST'] + ENV['CUCUMBER_BASE_PATH'])
  session
end

Tenga en cuenta que si está utilizando mecanizar, Webrat tampoco dejará de seguir sus redireccionamientos porque no interpretará el host actual correctamente. Para trabajar con esto, puede agregar session.header('Host', ENV['CUCUMBER_HOST']) a lo anterior.

Para asegurarse de que las rutas correctas se usen en todas partes para visitar y combinar, agregue ENV['CUCUMBER_BASE_PATH'] + Al comienzo de su método Paths_To en raths.rb, si lo usa. Debe tener un aspecto como este:

  def path_to(page_name)
    ENV['CUCUMBER_BASE_PATH'] + 

    case page_name

Disculpas si alguien recibió algunos correos electrónicos de esto: originalmente intenté publicar como comentario y la Iritante UI de Stack Overflow me superó.

Otros consejos

Para la mecanización, la primera URL que especifique se considerará la URL base. Por ejemplo:

require "rubygems"
require "mechanize"

agent = Mechanize.new
agent.get("http://some-site.org")

# Subsequent requests can now use the relative path:

agent.get("/contact.html")

De esta manera, solo especifica la URL base una vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top