在尝试测试某些登录/注销功能时,我想从会话中删除一些信息。我发现我根本无法访问会话。我不断收到错误:nil:NilClass 的未定义方法“会话”。
但令我惊讶的是,我发现我可以从其他 rspec 页面访问会话。其他详细信息如下。我的问题是:为什么我可以从某些文件而不是其他文件访问会话?我怎样才能做到这一点,以便我可以在下面的第二个示例中访问会话?
详细信息文件:spec/controllers/tenants_controller_spec.rb
require 'spec_helper'
describe TenantsController do
specify { session[:tag].should == 'abc' }
end
文件:spec/requests/test.rb
require 'spec_helper'
describe 'Test' do
specify { session[:tag].should == 'abc' }
end
当我通过 rspec 运行第一个文件时,我得到:
Failure/Error: specify { session[:tag].should == 'abc' }
expected: "abc"
got: nil (using ==)
哪个好。由于这个原因,这应该失败。
但是,当我运行第二个文件时,我得到:
Failure/Error: specify { session[:tag].should == 'abc' }
NoMethodError:
undefined method `session' for nil:NilClass
那么为什么 session 在这里是一个未定义的方法呢?