如何在Rails 3中编写rspec测试来测试用户在创建后是否使用authlogic进行签名?

时间:2011-03-16 04:37:56

标签: ruby-on-rails rspec authlogic

我正在将我的应用程序从自定义身份验证机制移植到authlogic,我无法确定如何测试新用户在创建后是否已登录。我的旧测试如下:

describe UsersController do
.
.
.
before(:each) do
  activate_authlogic
  @attr = { :username => "New User", :email => "user@example.com",
    :password => "foobar", :password_confirmation => "foobar" }
end
.
.
.
 it "should sign the user in" do
    post :create, :user => @attr
    controller.should be_signed_in
 end

哪里签了_in?在app / helpers / user_sessions_helper.rb中定义,并包含在应用程序控制器中:

# check for a signed in user. returns true if current_user is not nil.        
def signed_in?
  !current_user.nil?
end

我期待这个测试通过但是signed_in?是假的。有任何想法吗?我的猜测是我应该问UserSession:用户是否已登录,但我不确定authlogic如何允许我这样做。

任何提示,提示或技巧都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我已经设法编写了一个通过的测试 - 现在我只需要弄清楚测试中的逻辑是否正确:)

it "should sign the user in" do
    post :create, :user => @attr
    @user_session = UserSession.find
    @user_session.user.should_not == nil
end

这至少会检查是否已登录 用户,但它并未显示刚刚创建的用户已登录。我认为它需要更多工作。