J'écris des tests de concombre pour une application basée sur Sinatra en utilisant Webrat. Pour certains tests que je dois mettre en œuvre un tel scénarioComment gérer les cookies lors des tests avec Webrat?
Given I am logged in as admin
When I am visiting "/"
Then I should see "Settings"
Je définis pas comme ceci:
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
réussit un cookie est créé
response.set_cookie(cookie_name, coockie_value)
puis vérifié dans les vues lorsque l'utilisateur tente d'accéder aux pages d'administration via la méthode d'assistance:
def logged_in?
request.cookies[cookie_name] == cookie_value
end
Et il semble que Webrat ne stocke pas les cookies. Les tests ne signalent aucune erreur, mais "logged_in?" dans les vues est toujours faux, comme le cookie n'a pas été enregistré.
Est-ce que je fais quelque chose de mal? Si c'est juste comment Webrat fonctionne, quelle est la meilleure solution de contournement?
Ce dernier exécute en fait votre application dans un processus séparé, ce qui signifie que vous ne pouvez pas accéder à la plupart des états Rails à partir de vos tests. – emk
emk: merci, ça marche avec Selenium backend! –