我无法通过测试。在我的应用程序中,用户可以有多个他们请求的会议(sent_meetings)以及他们请求的会议(received_meetings)。rspec测试失败:两个“科目”之间的冲突
首先,我(简化)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型号:
meeting.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)两个“主题”行之间的冲突,以及一个覆盖另一个。这是我失败的测试消息:
失败:
1)会议请求 故障/错误:它(:请求者){应==请求者} 预期:# 有:无(使用==) #./spec/models/meeting_spec.rb:15:in`块(2级)在'
在0.67458秒 36个实例成品,1次失败
失败的例子:
rspec的./spec/models/meeting_spec.rb:15#会议请求
我发现有趣的是,我得到这个错误只为要么请求者或请求方(显然有冲突)。两个主题代码块的顺序很重要,当我切换它们时,我会得到与上面相同的错误,但对于'请求者'而不是'请求者'。
我怎样才能通过测试?谢谢!
很棒,豆。。有用。谢谢!然而,现在我的验证测试失败了(我没有注释'it {should be_valid}')。发送的会议和接受的会议都需要对请求者和被请求者作出回应吗?我尝试过,但他们继续失败。 – keypulsations 2012-07-31 18:48:02
我认为这是另一个问题。请批准我的回答并提出另一个问题。谢谢! – Dougui 2012-07-31 19:14:46