Я пишу тесты Cucumber для приложения на основе Sinatra с использованием Webrat. Для некоторых тестов мне нужно реализовать сценарий типа
Given I am logged in as admin
When I am visiting "/"
Then I should see "Settings"
Я определяю шаги следующим образом:
Given /^I am logged in as "(.+)"$/ do |user|
visit "/login"
fill_in "login", :with => user
fill_in "password", :with => "123456"
click_button "Login"
end
When /^I am viewing "(.+)"$/ do |url|
visit(url)
end
Then /^I should see "(.+)"$/ do |text|
response_body.should =~ /#{text}/
end
В случае успеха создается cookie
response.set_cookie(cookie_name, coockie_value)
и затем проверяется в представлениях, когда пользователь пытается получить доступ к страницам администратора с помощью вспомогательного метода:
def logged_in?
request.cookies[cookie_name] == cookie_value
end
И, похоже, Вебрат не хранит куки. Тесты не сообщают ни об одной ошибке, но "logged_in?" в представлениях всегда ложно, как куки не был сохранен.
Я что-то не так делаю? Если это именно то, как работает Webrat, какой лучший обходной путь?