dMi*_*Mix 5 ruby tdd ruby-on-rails
在我的一些控制器中,我有一个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
Run Code Online (Sandbox Code Playgroud)
但是现在我的功能测试失败了,因为它重定向到root.所以我需要一种方法来模拟会话已经创建,但我尝试过的任何东西都没有.这是我现在所拥有的,测试几乎忽略了它:
test_helper.rb中
class ActionController::TestCase
setup :activate_authlogic
end
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
您应该在UserSession.create中传递ActiveRecord对象
就像是:
u = users(:dmix)
UserSession.create(u)
Run Code Online (Sandbox Code Playgroud)