Cookies Rails中具有恶作剧的持久登录Cookie不工作

Cookies Rails中具有恶作剧的持久登录Cookie不工作,cookies,capybara,phantomjs,poltergeist,Cookies,Capybara,Phantomjs,Poltergeist,我正在开发一个Rails应用程序,从使用selenium webdriver和firefox过渡到使用poltergeist和phantomjs来测试capybara和rspec。这是一个庞大的、成熟的代码库,所以可以预见我会遇到一些麻烦 我遇到的问题是在测试开始时尝试使用cookies登录测试用户。Poltergeist在我的spec\u helper.rb文件中设置如下: Capybara.register_driver :poltergeist do |app| options =

我正在开发一个Rails应用程序,从使用
selenium webdriver
firefox
过渡到使用
poltergeist
phantomjs
来测试
capybara
rspec
。这是一个庞大的、成熟的代码库,所以可以预见我会遇到一些麻烦

我遇到的问题是在测试开始时尝试使用cookies登录测试用户。Poltergeist在我的
spec\u helper.rb
文件中设置如下:

Capybara.register_driver :poltergeist do |app| 
  options = {
    :js_errors => false,
    :inspector => true,
    :window_size => [1280, 1024]
  }
  Capybara::Poltergeist::Driver.new(app, options)
end

Capybara.default_driver = :poltergeist
Capybara.javascript_driver = :poltergeist
spec/support/helpers.rb中,我有以下helper方法:

def login_as(user,redirect=nil)
  cookie_jar = ActionDispatch::Cookies::CookieJar.new
  signed_jar = ActionDispatch::Cookies::SignedCookieJar.new cookie_jar,
               AppName::Application.config.secret_token
  signed_jar[:session_31] = {
    value: {
      :'warden.user.user.key' =>
        ["User", [user.id], user.password_salt] } }
  visit '/test.html' unless current_path
  cookie_options = { :expires => Time.now + 15.years }
  page.driver.set_cookie(
        :session_31, 
        cookie_jar[:session_31],
        cookie_options)
  visit redirect if redirect
end
将此与我为selenium webdriver所做的比较:

def login_as(user,redirect=nil)
  cookie_jar = ActionDispatch::Cookies::CookieJar.new
  signed_jar = ActionDispatch::Cookies::SignedCookieJar.new cookie_jar,
               AppName::Application.config.secret_token
  signed_jar[:session_31] = {
    value: {
      :'warden.user.user.key' =>
        ["User", [user.id], user.password_salt] } }
  visit '/test.html' unless current_path
  page.driver.browser.manage.add_cookie(
    name: :session_31,
    value: cookie_jar[:session_31])
  visit redirect if redirect
end
然后我的测试在(:each)
块之前的
中调用这个helper方法

before(:each) do
  # Setup users and such
  login_as(@user)
end
在这两种情况下都会创建cookie,但用户没有使用
poltergeist
登录。在这两种情况下显示的cookies也略有不同。与恶鬼:

["session_31",
#<Capybara::Poltergeist::Cookie:0x000fffffffffff
 @attributes=
  {"domain"=>"localhost",
   "expires"=>"Tue, 09 Jan 2029 15:48:08 GMT",
   "expiry"=>1862686088,
   "httponly"=>true,
   "name"=>"session_31",
   "path"=>"/",
   "secure"=>false,
   "value"=>
    "secret ;)"}>]]

我不知道这是不是闹鬼、幻影、我自己的代码库的问题,或者是魔法侏儒造成的。我真是不知所措。有人有什么想法吗?

为什么不像用户那样通过用户界面登录?您找到了解决方案吗?您可能会遇到什么问题?
[{:name=>"session_31",
:value=>
 "secret ;)",
:path=>"/",
:domain=>"localhost",
:expires=>Wed, 09 Jan 2030 18:40:58 +0000,
:secure=>false}]