这是以下环境中控制器规范中的cookie集合的问题:
我有一个简单的控制器规范,它创建一个Factory用户,调用一个设置cookie的登录方法,然后测试以查看登录用户是否可以访问页面.问题是所有cookie似乎都在设置的身份验证cookie和我的控制器上调用的"show"操作之间消失.
在rails dev服务器上的浏览器中运行时,我的代码工作正常.运行规范时更奇怪的行为是,通过cookie哈希设置的所有内容都会消失,但通过会话哈希设置的所有内容仍然存在.我只是错过了使用rspec时cookie的工作原理吗?
规格代码
it "should be successful" do
@user = Factory(:user)
test_sign_in @user
get :show, :id => @user
response.should be_success
end
Run Code Online (Sandbox Code Playgroud)
登录代码
def sign_in(user, opts = {})
if opts[:remember] == true
cookies.permanent[:auth_token] = user.auth_token
else
cookies[:auth_token] = user.auth_token
end
session[:foo] = "bar"
cookies["blah"] = "asdf"
self.current_user = user
#there are two items in the cookies collection and one in the session now
end
Run Code Online (Sandbox Code Playgroud)
对get:show请求的身份验证检查在此失败,因为cookies [:auth_token]为nil
def current_user
#cookies collection is now empty …Run Code Online (Sandbox Code Playgroud)