Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 ActionDispatch env的nil值[env_SESSION_OPTIONS_KEY]_Ruby On Rails 4_Rspec_Session Cookies - Fatal编程技术网

Ruby on rails 4 ActionDispatch env的nil值[env_SESSION_OPTIONS_KEY]

Ruby on rails 4 ActionDispatch env的nil值[env_SESSION_OPTIONS_KEY],ruby-on-rails-4,rspec,session-cookies,Ruby On Rails 4,Rspec,Session Cookies,我正在尝试运行一个capybara cookie特性规范,当我调用visit[URL]方法时,堆栈跟踪会给出以下错误 Failures: 1) Cookie Configuration writes cookies Failure/Error: visit('/cookies') NoMethodError: undefined method `[]=' for nil:NilClass # /Users/amat/.rbenv/versions

我正在尝试运行一个capybara cookie特性规范,当我调用
visit[URL]
方法时,堆栈跟踪会给出以下错误

Failures:

  1) Cookie Configuration writes cookies
     Failure/Error: visit('/cookies')
     NoMethodError:
       undefined method `[]=' for nil:NilClass
     # /Users/amat/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/actionpack-4.0.13/lib/action_dispatch/request/session.rb:169:in `load!'
     # /Users/amat/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/actionpack-4.0.13/lib/action_dispatch/request/session.rb:164:in `load_for_write!'
     # /Users/amat/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/actionpack-4.0.13/lib/action_dispatch/request/session.rb:153:in `merge!'
     # /Users/amat/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/actionpack-4.0.13/lib/action_dispatch/request/session.rb:13:in `create'
     # /Users/amat/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/actionpack-4.0.13/lib/action_dispatch/middleware/session/abstract_store.rb:69:in `prepare_session'
     # /Users/amat/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/rack-1.5.3/lib/rack/session/abstract/id.rb:224:in `context'
     # /Users/amat/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/rack-1.5.3/lib/rack/session/abstract/id.rb:220:in `call'
     # /Users/amat/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/actionpack-4.0.13/lib/action_dispatch/middleware/cookies.rb:486:in `call'
我怀疑问题的一部分在于
actionpack-4.0.13/lib/action\u dispatch/request/session.rb
我们有以下代码:

def self.find(env)
  env[ENV_SESSION_OPTIONS_KEY]
end
这将返回
nil
,因为我猜env[env\u SESSION\u OPTIONS\u KEY]没有设置。因为它在调用时返回
nil

def load!
   id, session = @by.load_session @env
   options[:id] = id
   @delegate.replace(stringify_keys(session))
   @loaded = true
end
options[:id]
给出了上面堆栈跟踪中看到的错误

这是我在测试中必须手动存根的东西吗?是否有我可能缺少的配置

编辑:如果您想查看等级库代码,它非常简单:

require 'spec_helper'

describe 'Cookie Configuration', type: :feature do
  it 'writes cookies' do
    visit('/cookies')
    ..
  end
end

您的测试环境的cookie存储配置是什么?在虚拟应用程序中,我在
config/initializers/secret\u-key\u-base=[secret]
config/initializers/secret\u-token.rb
session\u-store.rb
中设置了
cookie\u-store