2012-09-10 5 views
2

테스트를 위해 ShouldaRspec을 사용하고 있습니다.Ensure_inclusion_of는 실패 할 때 계속 전달됩니까?

validates_inclusion_of :private, :in => [true, false] 
: 속성이 true 또는 false 인 부울입니다

it { should ensure_inclusion_of(:private).in_array(%w[true false]) } 

:

나는 이것이 내 테스트 사양에 내가 모델의 검증을 완료하지 않은 경우 통과 유지하려고

어떻게하면 제대로 쓸 수 있습니까?

답변

4

TrueFalse은 문자열이 아니므로 % w를 사용하지 마십시오.

it { should ensure_inclusion_of(:private).in_array([true, false]) } 

업데이트 - 2014년 4월 10일

이 검증 했어야의 현재 버전에서 작동하지 않으며, this recent commit에 따라,이 고정되지 않지만 대신 예외를 발생합니다. 부울 필드에 할당 된 값으로

는 캐스팅됩니다 중 하나 (다른 어떤 설정) 부울 필드 테스트를위한 나의 선호하는 방법은 다음과 같다 진정한 ( true, 1, '1', 't', 'T', 'true', 'TRUE'에 의해 설정) 또는 false :

  • 데이터베이스에 널 (null)을 허용하는 부울 - validates :field, inclusion: { in: [true,false] }이 설정 될 때 통과 할 it { should_not allow_value(nil).for(:field)를 사용 - 더 테스트가 필요하지 않습니다, 모든 가능한 값은 데이터베이스에 널 (null)이 허용하지 않는 부울

  • 유효합니다 모델

+0

이 방법이 유용합니까? –