在我的非JS Capybara测试中,我想分配一个cookie。我该怎么做?
在下面写下我自己的答案。
解决了它。
headers = {}
Rack::Utils.set_cookie_header!(headers, name, value)
cookie_string = headers["Set-Cookie"]
Capybara.current_session.driver.browser.set_cookie cookie_string
基于此。
如果您需要同时支持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
可能存在逃避问题,因为它只是插值的;不过对我的需求来说效果不错。