2009-05-12 2 views
1

지금 나는이 같은 것입니다 모델 기능이 간단한 모델 방법을 specing하기 사양 쓰기, 첫 번째는 다음과 같습니다방법은

before(:each) do 
    @address = Factory.build(:address) 
end 

@address.first_line.should == @address.building_name + " " + 
           @address.street_name + " " + 
           @address.suburb 

그리고 다른 방법은

입니다
@address.first_line.should == "Alpha Bravo St Charlie" 

어떤면에서 더 좋다고 생각하십니까? 그리고 다른 하나를지지하는 이유는 무엇입니까?

답변

1

아니요. 첫 번째는 약간 장황하고 메소드의 구현과 함께 너무 지나치게 느껴진다. 두 번째 버전은 공장에 대한 스펙을 단단히 결합하여 공장을 변경해야 할 때 큰 고통이 될 것입니다.

대신, 짧은 두 번째 스타일을 사용하지만 스펙에 명시 적으로 사용되는 데이터를합니다

@address = Factory.build(:address, :building_name => "Alpha", 
            :street_name => "Bravo St.", 
            :suburb => "Charlie") 

@address.first_line.should == "Alpha Bravo St. Charlie" 

일부를 테스트 할 필요가있어서, 서로 다른 테스트 데이터를 제공 할 수 있기 때문도 좋다 다른 기능 중 :

@address = Factory.build(:address, :building_name => "Alpha ", 
            :street_name => " Bravo St. ", 
            :suburb => " Charlie ") 

@address.first_line.should == "Alpha Bravo St. Charlie"