Я пишу тесты 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
И похоже, что Webrat не хранит файлы cookie. Тесты не сообщают об ошибках, но "logged_in?" в представлениях всегда ложно, как будто куки не были сохранены.
Я делаю что-то неправильно? Если именно так работает Webrat, то каков наилучший обходной путь?