2009-05-12 7 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

どちらもありません。最初は少し冗長で、このメソッドの実装ではあまりにも重すぎます。 2つ目はあなたの仕様をあなたの工場に強く結びつけ、あなたが工場を変えなければならないときには大きな痛みになります。代わりに

、短い第二のスタイルを使用しますが、仕様に明示的に使用されるデータを作る:

@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" 
関連する問題