テストに合格できなくて困っています。私のアプリケーションでは、ユーザーは、自分が要求した多くのミーティング (sent_meetings) と、要求されたミーティング (received_meetings) を持つことができます。
まず、私の (単純化された) user.rb モデル:
user.rb
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_secure_password
has_many :sent_meetings, :foreign_key => "requestor_id", :class_name => "Meeting"
has_many :received_meetings, :foreign_key => "requestee_id", :class_name => "Meeting"
end
そして私の meeting.rb モデル:
ミーティング.rb
class Meeting < ActiveRecord::Base
attr_accessible :intro, :proposed_date, :proposed_location
belongs_to :requestor, class_name: "User"
belongs_to :requestee, class_name: "User"
end
そして私のテスト:
meeting_spec.rb
require 'spec_helper'
describe Meeting do
let(:requestee) { FactoryGirl.create(:user) }
let(:requestor) { FactoryGirl.create(:user) }
before { @received_meeting = requestee.received_meetings.build(intro: "Lorem ipsum") }
before { @sent_meeting = requestor.sent_meetings.build(intro: "Lorem ipsum") }
subject { @sent_meeting }
it { should respond_to(:intro) }
it { should respond_to(:requestor_id) }
it { should respond_to(:requestor) }
its(:requestor) { should == requestor }
# it { should be_valid }
subject { @received_meeting }
it { should respond_to(:intro) }
it { should respond_to(:requestee_id) }
it { should respond_to(:requestee) }
its(:requestee) { should == requestee }
# it { should be_valid }
end
私の仕様ファイル (@sent_meeting と @received_meeting) の 2 つの「件名」行の間に矛盾があるようで、一方が他方を上書きしています。失敗したテストメッセージは次のとおりです。
失敗:
1) ミーティング リクエスタの失敗/エラー: its(:requestor) { should == requestor } expected: # got: nil (using ==) # ./spec/models/meeting_spec.rb:15:in `block (2 レベル)の '
0.67458秒で完走 36例 失敗1回
失敗した例:
rspec ./spec/models/meeting_spec.rb:15 # 会議のリクエスタ
リクエスタまたはリクエスティのいずれかに対してのみこのエラーが発生したことは興味深いことでした(明らかに競合があります)。2 つのサブジェクト コード チャンクの順序が重要であり、それらを切り替えると、上記と同じエラーが発生しますが、「requestor」ではなく「requestee」に関してです。
どうすればテストに合格できますか? ありがとうございました!