2011-09-25 1 views
1

다음 예에서는 create() 대신 build()을 사용할 수 있습니까? 실제 사용에서sign_in() 테스트 도우미가 new_record를 수락하도록 고안 할 수 있습니까?

class UsersControllerTest < ActionController::TestCase 

    setup do 
    @user = Factory.create(:user) 
    end 

    test "admin can get index" do 
    sign_in @user 
    get :index 
    assert_response :success 
    end 

    test "user cannot get index" do 
    sign_in @user 
    get :index 
    assert_response 403 
    end 

end 

, 사용자는 이미 내 테스트 create()를 사용하는 이유는 그래서, 로그인 이전에 생성 된 (저장) 된 것이다. 그러나 테스트를 더 빨리 진행하기를 바랍니다. build()을 사용하고 싶습니다.

devise README은 build()를 사용하는 것이 좋습니다라고 명시하지 않습니다.

미리 도움을 주셔서 감사합니다.

답변

1

호세 (José)의이 메모에 따르면 사용자 레코드가 유지되어야하는 것처럼 보입니다.

가짜는 결코 작동하지 않습니다. 로그인 할 때 사용자는 세션에 저장되는 입니다 (기본적으로 사용자 클래스와 해당 ID). 컨트롤러에 액세스하면 저장된 데이터를 기반으로 다른 사용자 개체가 검색됩니다. 문제를 해결하는 가장 좋은 방법은 이 Factory Girl과 같은 객체를 지속하는 것을 사용하는 것입니다.

https://github.com/plataformatec/devise/issues/928

관련 문제