1

내 레일 애플리케이션에서 인증에 Clearance을 사용하고 있습니다. 기본 Minitest 스택을 사용하고 있습니다. 허가는 기본적으로 전자 메일 및 암호 필드 만 사용하므로 name 필드를 추가하고 이제는 단위 테스트를 통해 일부 검사를 수행하려고합니다.유닛 테스트 사용자 모델에 대해 레일 4에 클리어런스가있는 고정구 사용

이것은 지금까지 테스트 중입니다.

test "should not save without name" do 
    user = User.new 
    user.email = "[email protected]" 
    user.password = "foobar" 
    assert_not user.valid? 
end 

그리고 이것은 나의 모델 유효성 확인입니다.

validates :name, presence: true 

모든 것이 잘 작동하고 테스트가 예상대로 실패합니다. 문제는 내가 사용자 정착물을 사용하여 약간의 테스트를 정리하고 싶다는 것입니다.

한 가지 가능한 방법은

john: 
    name: John 
    email: [email protected] 
    password: foobar 

수 그러나 테스트 실행은 암호라는 필드가 아니라고 말하는 실패합니다. 사실이 필드는 encrypted_password입니다. BCrypt::Password.create 메서드를 사용하여 하나를 만들 수 있지만 또 다른 오류는 remember_token이 null 일 수 없다는 것을 나타내며, confirmation_token 필드에서도 같은 결과가 발생한다고 생각합니다. 제 질문은 이렇습니다.

클리어런스 인증 라이브러리를 사용하여 테스트에서 이러한 데이터를 사용하기위한 레일 고정 장치를 만들 수있는 방법이 있습니까?

업데이트 :

john: 
    name: John 
    email: [email protected] 
    encrypted_password: <%= BCrypt::Password.create("foobar", cost: 4) %> 
    remember_token: <%= Clearance::Token.new %> 

을 그리고 그것은 마법처럼 작동, 그것 뿐이다 : 인해 결과 고정이 정답에 고정 예를 명확히하기 위해.

답변

1

개체를 만드는 데 User ActiveRecord API를 사용하는 경우 모든 필수 필드를 적절하게 설정해야합니다. 불행히도, 이런 일이 비품에서 발생하는 것처럼 보이지 않습니다. - 또는 최소한 그것은 당신에게 일어나지 않습니다. (저는 조명기를 사용하지 않습니다. 그래서 확실하지 않습니다).

필요한 토큰을 설정할 수 있습니다 : Clearance::Token.new, 클리어런스가 토큰을 생성하는 데 사용하는 것입니다.

+0

누락 된 부분이었습니다. 지금은 정상적으로 작동합니다. 감사합니다. –

관련 문제