4
내 응용 프로그램에는 세션 컨트롤러가 있습니다. 이제는 내가 로그인 한 경우에만 액세스 할 수있는 사용자 컨트롤러를 테스트하고 싶습니다.세션이있는 레일 컨트롤러 테스트
내 문제는 어떻게 세션을 위조 할 수 있는가입니다. 난 당신이 지금 나를 도울 수 있기를 바랍니다 그래서 이미 많이 시도했다 :
응용 프로그램 컨트롤러 :
helper_method :current_user
def authenticate_user
current_user
if @current_user
return true
else
redirect_to(:controller => 'sessions', :action => 'new')
return false
end
end
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
사용자의 컨트롤러가 있습니다
before_filter :authenticate_user
감사관 테스트 :
describe "GET index" do
it "assigns all users as @users" do
user = FactoryGirl.create(:user)
@request.session[:user_id] = user.id
get 'users'
expect(@users.size).to eq(1)
end
end
나는 또한 session[:user_id] = user.id
을 시도하고 디버깅을 요청했다 (요청 후) :
- save_and_open_page 로그인 페이지를 봅시다.
user = FactoryGirl.create(:user) controller.session[:user_id] = user.id get 'users' expect(@users.size).to eq(1)
또한이
@users
변수는 테스트에서 정의한 마시기 : @current_user
은 전무User.find(session[:user_id])
가 올바른 사용자
참고로 레일 5에서는 더 이상이 기능을 사용할 수 없습니다. –
@RobinClowers Rails 5에서는 무엇을합니까? – sscirrus
내 대답보기 : https://stackoverflow.com/questions/37796129/unable-to-set-session-hash-in-rails-5-controller-test/43563901#43563901 –