Dans certains de mes contrôleurs, j'ai un before_filter qui vérifie si un utilisateur est connecté? pour les actions CRUD.Test fonctionnel Authlogic?
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
Mais maintenant mes tests fonctionnels échouent parce que sa racine à redirigeant. J'ai donc besoin d'un moyen de simuler qu'une session a été créée mais rien de ce que j'ai essayé n'a fonctionné. Heres ce que j'ai en ce moment et les essais assez bien ignorer ce:
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
Est-ce que je manque quelque chose?
Je vous encourage vraiment à vous éloigner des appareils pour tester si vous avez une application qui n'en dépend pas déjà. Ils sont difficiles à maintenir, et vraiment frustrant. Consultez le railcast, les usines pas les montages. – nitecoder
En créant un utilisateur comme celui-ci, vous ne testez pas que les contrôles appropriés sont appelés dans votre contrôleur (par exemple, doit être connecté, doit être un administrateur, etc.). Il est préférable de se moquer des méthodes attendues pour s'assurer qu'elles sont appelées, par ex. pour Mocha: mock (@controller) .expects (: current_user) .returns (@user) –