0
OK,이 장을 마쳤으므로 모든 코드가 올바르게 동작합니다. 그러나 나는 1 비트 정도 혼란 스럽다. sessions_helper_test에서 토큰 쿠키 기억을 직접 설정했습니다. is_logged_in에 대한 테스트? 통과, 비록 is_logged_in? 세션 만 검사합니다.레일 튜토리얼 8 장 : is_logged_in은 어떻게 작동합니까? 패스?
require 'test_helper'
class SessionsHelperTest < ActionView::TestCase
def setup
@user = users(:michael)
remember(@user)
end
test "current_user returns right user when session is nil" do
assert_equal @user, current_user
assert is_logged_in?
end
test "current_user returns nil when remember digest is wrong" do
@user.update_attribute(:remember_digest, User.digest(User.new_token))
assert_nil current_user
end
end
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
fixtures :all
include ApplicationHelper
# Add more helper methods to be used by all tests here...
def is_logged_in?
!session[:user_id].nil?
end
...
end
module SessionsHelper
def log_in(user)
session[:user_id] = user.id
end
# Remember user in persistent session
def remember(user)
user.remember
cookies.permanent.signed[:user_id] = user.id
cookies.permanent[:remember_token] = user.remember_token
end
...
end
class User < ActiveRecord::Base
...
def remember
self.remember_token = User.new_token
update_attribute(:remember_digest, User.digest(remember_token))
end
...
end
누구든지 설명 할 수 있습니까?
남자! 나는 내가 어떻게 이것을 놓쳤는 지 전혀 모른다. 감사 :) –