2011-09-17 2 views
1

Ruby on Rails 3.0.9 및 RSpec 2를 사용하고 있습니다. 테스트해야하는 "유효성 검사 로직"에 대해 알고 싶습니다.어떤 "유효성 검사 로직"을 테스트해야합니까?

class User < ActiveRecord::Base 
    validates :firstname 
    :presence => true 
end 

난 다음 무엇을 테스트해야합니다 : 내 모델에서 내가 가지고있는 경우 즉,?

아니면 모두를 테스트해야 "유효한 이름을하지 말았어야" "는 유효한 이름이 있어야합니다"?

+0

질문에서 "is present"를 특별히 테스트하는 데 관심이 있다고 가정합니다. 다른 "유효성"이 아닌 이름의 명제. 어쩌면 그 점을 분명히해야합니다. – jake

답변

3

당신은 단순히 이렇게 모두를 테스트 할 수 있습니다

it "should validate presence of" do 
    should validate_presence_of :firstname 
end 

는 이러한 모든 표준 레일 검증에 대한 shoulda matchers를 살펴 보자.

2

나는 둘 다 테스트하면 안된다고 생각합니다. 그러면 충분할 것입니다 :

0

기본적으로 이름의 형식은 문화 중심적이기 때문에 기본적으로 이름의 유효성을 검사하는 알고리즘은 없습니다. 따라서 실제로는 사람 이름과 같은 것에 대해 복잡한 검증을 피해야합니다. 예를 들어 일부 장소/문화에는 성이 없기 때문에 자신의 존재를 확인하는 것조차 적절하지 않습니다. 유효성 검사 이름을 정말 나쁜 생각으로 만드는 다른 예제의 전체 목록이 있습니다. 이름 확인 문제에 대한 자세한 내용은 내 대답 this question을 참조하십시오.

일반적으로 필드의 유효성을 검사 할 때 유효한 데이터와 유효하지 않은 데이터를 모두 테스트합니다. 필드를 유효한 값으로 설정하면 .valid? 메서드는 true을 반환하고 유효하지 않으면 false을 반환합니다.

일반적으로 당신은 단지 일반적인 유효하고 유효하지 않은 예를

  • 몇 가장자리 경우
0

을 테스트해야합니다, 긴 목록을 수행 할 필요가 없습니다 할 수도 있습니다 테스트 특정 값 :

describe User do  
    context "validations" do 
     it { should_not allow_value("admin").for(:firstname) } 
     it { should allow_value("JohnDoe").for(:firstname) } 
    end  
end 
관련 문제