내 컨트롤러 중 일부에 사용자가 로그인되어 있는지 확인하는 before_filter가 있습니까? CRUD 작업.기능 테스트 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
하지만 지금 내 기능 테스트가 실패 루트의 리디렉션 때문이다. 그래서 세션이 생성되었다는 것을 시뮬레이트하는 방법이 필요합니다.하지만 시도한 것은 아무것도 없습니다. Heres는 내가 지금 가지고 테스트가 거의 무시 무엇을 :
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
내가 실종 무엇인가?
아직 의존하지 않는 앱을 가지고 있다면 테스트를 위해 비품에서 멀리 나가는 것이 좋습니다. 그들은 유지하기가 힘들며 실제로 실망합니다. railscast, Factories Not Fixtures를 확인하십시오. – nitecoder
컨트롤러에서 적절한 수표가 호출되었다는 것을 테스트하지 않는 것과 같은 사용자를 생성하여 (예 : 로그인해야하며 관리자 여야 함). 예상되는 메소드를 조롱하여 호출되도록하는 것이 좋습니다 (예 : mocha : mock (@controller) .expects (: current_user) .returns (@user) –