2011-07-28 3 views
4

나는 일반적으로 다음과 같은 내용을 내 Rspec 테스트에 작성합니다.Rspec : 유효하지 않은 모델의 오류 표시

user.new(...) 
user.should be_valid 

문제는 테스트가 실패 할 때 사용자 개체의 오류를 보지 못하는 것입니다. 이 테스트를 다시 작성하여 Rspec 출력에서 ​​user.errors.inspect와 같은 것을 볼 수있는 좋은 방법이 있습니까? 나는 user.errors.should be_empty을 시도했지만, 여전히 "예상되는 사실은 거짓"이라고 말하고있다.

답변

9

사용자 정의 정규식을 정의하여이를 수행 할 수 있습니다. 이 같은 일이 트릭을해야합니다.

RSpec::Matchers.define :be_valid do 
    match do |actual| 
    actual.valid? 
    end 

    failure_message_for_should do |actual| 
    "expected that #{actual} would be valid (errors: #{actual.errors.full_messages.inspect})" 
    end 

    failure_message_for_should_not do |actual| 
    "expected that #{actual} would not be valid" 
    end 

    description do 
    "be valid" 
    end 
end 
+0

간단하고 효율적인, +1 – apneadiving

+1

@hammar :이'be_valid' 이름을 지정할 수 있습니다 그것은 잘 작동합니다. –

+0

유쾌한 감사합니다! –

관련 문제