0
我有一個meeting.rb和user.rb模型rspec的失敗驗證
meeting.rb
class Meeting < ActiveRecord::Base
attr_accessible :intro, :proposed_date, :proposed_location
validates :requestor_id, presence: true
validates :requestee_id, presence: true
belongs_to :requestor, class_name: "User"
belongs_to :requestee, class_name: "User"
end
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"
我無法弄清楚如何防止我的meeting_spec .rb驗證失敗。出於某種原因,我的sent_meetings或requested_meetings(類會議)沒有鏈接到它們各自的請求者或請求者(類用戶)(最後兩個代碼塊,「當requestor_id不存在時」,「當requestee_id不存在時」)。
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") }
describe "sent meetings" do
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 }
end
describe "received meetings" do
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
describe "accessible attributes" do
it "should not allow access to requestor_id" do
expect do
Meeting.new(requestor_id: requestor.id)
end.should raise_error(ActiveModel::MassAssignmentSecurity::Error)
end
it "should not allow access to requestee_id" do
expect do
Meeting.new(requestee_id: requestee.id)
end.should raise_error(ActiveModel::MassAssignmentSecurity::Error)
end
end
describe "when requestor_id is not present" do
before { @sent_meeting.requestor_id = nil }
it { should be_valid }
end
describe "when requestee_id is not present" do
before { @received_meeting.requestee_id = nil }
it { should be_valid }
end
end
這裏是RSpec的錯誤,我得到:
Failures:
1) Meeting sent meetings
Failure/Error: it { should be_valid }
expected valid? to return true, got false
# ./spec/models/meeting_spec.rb:17:in `block (3 levels) in <top (required)>'
2) Meeting received meetings
Failure/Error: it { should be_valid }
expected valid? to return true, got false
# ./spec/models/meeting_spec.rb:26:in `block (3 levels) in <top (required)>'
Finished in 0.77435 seconds
42 examples, 2 failures
Failed examples:
rspec ./spec/models/meeting_spec.rb:17 # Meeting sent meetings
rspec ./spec/models/meeting_spec.rb:26 # Meeting sent meetings
會很感激,就如何使會議和用戶之間的關聯(請求,被請求方)任何輸入( sent_meeting,requested_meeting)。
謝謝!
是的,這是完全正確的,它應該是{should_not be_valid}。然而,他們都失敗了,我發現這很奇怪。有任何想法嗎? – keypulsations 2012-08-01 00:27:33
這種情況下的信息是什麼? – bento 2012-08-01 00:30:53
將最後兩次驗證測試更改爲{should_not be_valid}。 「發送會議描述」和「描述接收到的會議」中的驗證失敗:失敗: 1)會議發送會議 失敗/錯誤:它應該是有效的 預計有效嗎?返回true,得到虛假 #./spec/models/meeting_spec.rb:17:in' 2)會議接收到的會議 失敗/錯誤:it {should be_valid} 預計有效嗎?返回true,得到錯誤 #./spec/models/meeting_spec.rb:26:in'block(3 levels)in ' –
keypulsations
2012-08-01 00:52:21