5

我在 RSpec 中找不到 valid_session 的示例,现在我所有的脚手架测试在添加授权后都被破坏了。

通过 Michael Hartl 的 Rails 教程,我正在使用此处描述的身份验证,除了我需要登录所有页面并使用“skip_before_filter”进行登录等。

我添加了一个用户固定装置,我已经验证它已加载:

userexample:
  id: 1
  name: Example Name
  email: examplename@example.com
  password_digest: $2a$10$NuWL8f2X0bXaCof3/caiiOwlF2rago7hH10JECmw1p75kEpf0mkie
  remember_token: YXjPrFfsK8SFQOQDEa90ow

然后在控制器规范中

def valid_session
    { remember_token: "YXjPrFfsK8SFQOQDEa90ow" }
end

会话助手的代码

module SessionsHelper
def sign_in(user)
    cookies.permanent[:remember_token] = user.remember_token
    self.current_user = user
end

def signed_in?
    return !current_user.nil?
end

def sign_out
    self.current_user = nil
    cookies.delete(:remember_token)
end

def current_user=(user)
    @current_user = user
end

def current_user
    @current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
end

我是否按预期使用了valid_session?在没有使用 sign_in 显式登录用户的情况下,是否会在会话中提供 remember_token?这可以通过其他方式解决吗?

4

1 回答 1

3

这应该对你有用......

def valid_session
  controller.stub!(:signed_in?).and_return(true)
end

...基于对我有用的类似内容:D

def valid_session
  controller.stub!(:authorize).and_return(User)
end
于 2013-07-01T22:37:40.087 回答