Чтобы выполнить ранее предложенный ответ с помощью Webrat, вы можете сделать следующее, например, в env.rb вашего Cucumber:
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
Чтобы сделать его более надежным, например, для использования в различных средах, вы могли быdo:
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
Обратите внимание, что если вы используете Mechanize, Webrat также не сможет следовать вашим перенаправлениям, потому что он не будет правильно интерпретировать текущий хост.Чтобы обойти это, вы можете добавить session.header('Host', ENV['CUCUMBER_HOST'])
к вышеприведенному.
Чтобы убедиться, что правильные пути используются везде для посещения и сопоставления, добавьте ENV['CUCUMBER_BASE_PATH'] +
в начало вашего метода paths_to в путях.рб, если ты им пользуешься.Это должно выглядеть так:
def path_to(page_name)
ENV['CUCUMBER_BASE_PATH'] +
case page_name
Извинения, если кто-то получил от этого несколько писем - я изначально пытался опубликовать комментарий, и раздражающий пользовательский интерфейс Stack Overflow одолел меня.