为了论证,我说Event
模型需要在首次创建Notification
时创建Event
。例如,使用Rails中的after_create
回调。
我应该在哪个规范中为回调放置测试? E.g models/event_spec.rb
? models/notification_spec.rb
?在其他地方作为集成测试?
这是我目前的思考过程:
我的第一反应是将其放在event_spec.rb
:
describe Event do
...
describe 'callbacks' do
it 'should create a Notification when first saved' do
# assertions here
end
end
end
然而,这感觉我正在打破关注点的分离。例如,我正在测试Notifcation
规范中是否创建了Event
。然后我认为将这些测试放在notification_spec.rb
:
describe Notification do
...
describe 'callbacks' do
it 'should be created when new an Event is first saved' do
# assertions here
end
end
end
但这也感觉不对,因为我们现在正在测试Event
规范中Notification
类的回调代码。
有什么想法吗?
答案 0 :(得分:2)
这属于Event
规范。 Event
负责创建Notification
。此外,回调代码位于Event
源文件中,因此寻找回调测试的人通常希望在Event
规范中找到它。
更重要的问题是:如何测试? “mockist”会完全隔离Notification
模型:
it "should create a Notification" do
Notification.should_receive(:create)
event.save!
end
这可确保回调创建Notification
,但不会运行create方法。