2012-01-02 4 views
2

RoR 모델 유효성 검사를 테스트하는 많은 예제가 있습니다. 테스트를 여러 모델에 걸쳐 DRY 상태로 유지할 수도 있습니다. 하지만 이미 테스트 된 Rails를 테스트하지 않습니까?레일스 모델 유효성 검사

@user = User.make 
@user.name = nil 

@user.should_not be_valid 

레일 검증이 작동하는지 테스트하지 않습니까?

+0

여러 모델에서 테스트를 통합하는 것을 권장하지 않습니다. 그 이유는 오늘날의 동작이 동일하기 때문입니다. 모델이 더 이상 다른 모델과 똑같이 동작하지 않을 때마다 테스트와 여러 모델 사이에 생성 된 종속성을 언 롤링하는 것은 힘들 것입니다. 기본 테스트를 간결하게 만드는 프레임 워크를 활용하는 것이 더 좋은 방법입니다 (예 : @ wizard-of-ogz에서 언급 한대로). – Nick

답변

7

레일 검증이 작동하는지 테스트하지 않습니까?

요점은 모델에서 이름 존재 여부를 테스트한다는 것입니다. 실제로 Rails 검증이 작동하고, Rspec이 작동하며, Ruby가 작동하고, OS가 작동하며, 물리 규칙이 갑자기 변경되지 않았 음을 실제로 테스트 한 사실 또한 요점입니다.

+0

감사합니다. Ruby에서 어떤 동작을 덮어 쓰면 기본 흐름이 손상 될 수 있다는 것을 이해합니다. –

2

요점은 모델에서 유효성 검사를 사용하고 있는지 테스트하는 것입니다. 나는 당신의 예제가 검증 자체를 테스트하고, 테스트 또한 다소 모호하다는 것에 동의한다.

어깨 보석을 사용하는 경우 should validate_presence_of(:name)을 사용하면됩니다.

1

update_attribute (update_attribute가 유효성 검사를 건너 뜁니다.)를 호출 한 프로그램의 메소드를 생각해보십시오. 이 메서드를 호출하면 개체가 잘못된 상태가되지만 데이터베이스는 계속 업데이트됩니다. 유효한?/무효를 사용하고 있습니까? 그러한 사례를 잡는 데 도움이 될 수 있습니다.