我希望能够执行以下测试,但它失败了,因为我正在使用构建事件而不是创建;
event_parent = build(:event_parent)
event = build(:event, event_parent: event_parent)
event_parent.events.size.should == 1
我真的不想使用create,因为a)它比较慢而且b)构建事件的工厂有一些关联和事情,我真的不想担心它们在测试数据库中。
我(错误地)假设我在event_parent模型上创建了一个返回其事件的方法,然后它可以在模型层而不是数据库层执行此操作。
我还将构建更改为事件的创建,这可行,但正如我所说,对我的测试套件的其余部分有一些不良副作用。
EventParent模型
class EventParent < ActiveRecord::Base
has_many :events
end
活动模型
class Event < ActiveRecord::Base
belongs_to :event_parent
end
答案 0 :(得分:1)
如果您想使用ActiveRecord指定关系,请查看shoulda-matchers gem
describe Event do
let(instance) { Event.new }
it { expect(instance).to belong_to(:event_parent) }
end
describe EventParent do
let(instance) { EventParent.new }
it { expect(instance).to have_many(:events) }
end
答案 1 :(得分:0)
我将回答我自己的问题。
这很难的原因是因为我正在测试Rails
,而不是我的应用。
我删除了测试。