現在、Ruby on Rails チュートリアルのソースコードをgithubからダウンロードして、勉強のために閲覧しています。 Twitterのようにつぶやいたことを表示するアプリです。
下記はフォローとフォロワーの関係を表すRelationshipモデルのテストです。このモデルはUserモデル1対多の関係にあります。
ruby
1require 'spec_helper' 2 3describe Relationship do 4 5 let(:follower) { FactoryGirl.create(:user) } 6 let(:followed) { FactoryGirl.create(:user) } 7 let(:relationship) { follower.relationships.build(followed_id: followed.id) } 8 9 subject { relationship } 10 11 it { should be_valid } 12 13 describe "follower methods" do 14 it { should respond_to(:follower) } 15 it { should respond_to(:followed) } 16 its(:follower) { should eq follower } 17 its(:followed) { should eq followed } 18 end
このテストの中にrespond_toが2回使われてます。respond_toは対象オブジェクトに、シンボルで指定したプロパティが有るかどうか。言い換えると応答するかどうかを真理値で返すものだと理解しています。
今回の場合は、Relationshipモデルのインスタンス、relationship(subjectで指定したもの)にfollower, followedのプロパティが存在するかをチェックしているかと思います。わざわざこのチェックを行う理由、メリットは次の通りだと思うのですが他にありますでしょうか?
- メソッドテスト前に、そのメソッドが存在するかを確認する。
- テスト対象のプロパティが存在しない場合は、そのテストをskipするようにして時短を行う。
- テスターとコーダーが分業する際に、テスターが定義して欲しいプロパティを明示しておく。
- コードを書く前にテストに必要なプロパティを書くことで、設計図代わりに使うことができる。また、これがテストとして流用できる。
お手数おかけしますが、お答え頂ければ幸いです。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/18 05:11