作为网站集成测试的一部分,我将黄瓜与水豚一起使用。水豚似乎无法模拟cookie的使用。
例如,我在用户登录时设置 cookie:
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
current_user = user
end
但是,当我稍后使用 cookies.inspect 获取 cookie 的值时,它返回 {}
这是水豚的已知限制吗?如果是这种情况,如何通过多个请求测试登录用户?
我应该添加我的测试:
Scenario: User is signed in when they press Sign In
Given I have an existing account with email "[email protected] /cdn-cgi/l/email-protection" and password "123456"
And I am on the signin page
When I fill in "Email" with "[email protected] /cdn-cgi/l/email-protection"
And I fill in "Password" with "123456"
And I press "Sign In"
Then I should see "Welcome Bob Jones"
这是对我有用的步骤。它将 cookie“admin_cta_choice”设置为等于从输入值派生的模型 ID。
Given /I have selected CTA "([^"]+)"/ do |cta_name|
cta = Cta.find_by_name(cta_name)
raise "no cta with name '#{cta_name}'" if cta.nil?
k = "admin_cta_choice"
v = cta.id
case Capybara.current_session.driver
when Capybara::Poltergeist::Driver
page.driver.set_cookie(k,v)
when Capybara::RackTest::Driver
headers = {}
Rack::Utils.set_cookie_header!(headers,k,v)
cookie_string = headers['Set-Cookie']
Capybara.current_session.driver.browser.set_cookie(cookie_string)
when Capybara::Selenium::Driver
page.driver.browser.manage.add_cookie(:name=>k, :value=>v)
else
raise "no cookie-setter implemented for driver #{Capybara.current_session.driver.class.name}"
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)