【发布时间】:2009-06-16 01:04:23
【问题描述】:
在我的一些控制器中,我有一个 before_filter 来检查用户是否已登录?用于 CRUD 操作。
application.rb
def logged_in?
unless current_user
redirect_to root_path
end
end
private
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
但是现在我的功能测试失败了,因为它重定向到 root。所以我需要一种方法来模拟一个会话已经创建,但我尝试过的没有任何效果。这是我现在拥有的,测试几乎忽略了它:
test_helper.rb
class ActionController::TestCase
setup :activate_authlogic
end
posts_controller_test.rb
class PostsControllerTest < ActionController::TestCase
setup do
UserSession.create(:username => "dmix", :password => "12345")
end
test "should get new" do
get :new
assert_response :success
end
我错过了什么吗?
【问题讨论】:
标签: ruby-on-rails ruby tdd