En algunos de mis controladores, ¿tengo un before_filter que verifica si un usuario está conectado? para las acciones de CRUD.Pruebas funcionales 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
Pero ahora mis pruebas funcionales fallan debido a que su redireccionamiento a la raíz. Entonces necesito una manera de simular que se ha creado una sesión, pero nada de lo que he probado ha funcionado. Esto es lo que tengo en este momento y las pruebas más o menos lo ignoran:
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
Me estoy perdiendo algo?
Realmente te animo a que te alejes de los accesorios para probar si tienes una aplicación que aún no depende de ellos. Son difíciles de mantener, y realmente frustrantes. Echa un vistazo a los rieles, fábricas no accesorios. – nitecoder
Al crear un usuario como ese, no está probando que se llaman las comprobaciones apropiadas en su controlador (por ejemplo, debe haber iniciado sesión, debe ser un administrador, etc.). Es mejor burlarse de los métodos esperados para asegurarse de que los llamen, p. para Mocha: mock (@controller) .expects (: current_user) .returns (@user) –