在我的非JS Capybara测试中,我想分配一个cookie。我怎么能这样做?
在下面写下我自己的答案。
答案 0 :(得分:7)
解决了它。
headers = {}
Rack::Utils.set_cookie_header!(headers, name, value)
cookie_string = headers["Set-Cookie"]
Capybara.current_session.driver.browser.set_cookie cookie_string
基于this。
如果你需要支持Rack :: Test和Poltergeist:
def set_cookie(name, value)
if Capybara.current_session.driver.respond_to?(:set_cookie)
# Poltergeist driver (JS)
Capybara.current_session.driver.set_cookie(name, value)
else
# Rack::Test driver (non-JS)
headers = {}
Rack::Utils.set_cookie_header!(headers, name, value)
cookie_string = headers["Set-Cookie"]
Capybara.current_session.driver.browser.set_cookie cookie_string
end
end
可能存在逃避问题,因为它只是插值;尽管如此,我的工作很好。