문제

오늘 Rails 앱의 기능 테스트를 작성하기 시작했습니다. 나머지 인증 플러그인을 사용합니다. 나는 누군가가 나를 명확히 할 수 있기를 바라는 혼란스러운 것들에 부딪쳤다.

1) Rails 앱의 대부분의 기능에 인증이 필요하기 때문에 빠른 로그인 기능을 작성했습니다.

def login_as(user)
   @request.session[:user_id] = user ? user.id : nil
end

이 기능에서 볼 수있는 문제는 기본적으로 인증을 입는 것입니다. 이것에 대해 걱정해야합니까? 어딘가에 진정한 인증 방법을 테스트하는 한이 경로를 사용해도 괜찮을 것입니다. 아니면 이것은 끔찍한 연습 일 수도 있습니다.

2) 두 번째 혼란스러운 점은 기능 테스트의 일부 장소에서는 전체 인증 프로세스가 필요하다는 것입니다. 사용자가 활성화되면 do_activate 메소드가 사용자의 초기 개체를 만듭니다. 학생 응용 프로그램을위한 빈 노트북 개체 및 펜 객체를 만드는 것과 유사합니다.

따라서 응용 프로그램을 올바르게 테스트하려면 해당 객체가 생성되도록 해당 활성화 상태를 누르려면 사용자가 필요합니다. 현재 공장 소녀를 사용하여 사용자를 만들고 위의 Login_AS 기능을 호출하여 가짜 인증을합니다.

또 다른 옵션은 전체 인증 시퀀스를 건너 뛰고 공장 소녀와 함께 빈 개체를 만드는 것입니다. 다른 곳에서 적절한 인증을 테스트 할 수 있습니다.

어떻게 생각해? 적절한 시퀀스를 거쳐야한다면 왜 아래 코드가 do_activate 함수를 호출하지 않습니까?

user = Factory.create(:user)
user.active = 1
user.save

고맙습니다!

도움이 되었습니까?

해결책

가짜는 완벽하게 받아 들여질 수 있습니다.

그러나 보호하려는 물건을 보호하는 다른 테스트를 작성하십시오. 그래서

test "it should show the profile page" do
  user = Factory(:user)
  login_as(user)
  get :show, :id => user
  assert_response :success
end

test "it should not show the profile page cos I'm not logged in" do
  user = Factory(:user)
  get :show, :id => user
  assert_response :redirect
end

후속 조치를 받으러 나를 때리십시오!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top