我有两个型号,Foo和Bar。 Foo有一个名为ask_bar_to_do_something的方法,它在保存Foo实例后调用。此方法不会更改此Foo实例的状态。
我正在考虑让这个方法返回1,并创建一个创建Foo对象并检查返回值的lambda块。有更好的方法吗?
谢谢。
答案 0 :(得分:13)
为什么不模拟对象并期望方法调用?
class Foo < ActiveRecord::Base
after_create :ask_bar_to_do_something
def ask_bar_to_do_something
#blah blah blah
end
end
如果您使用工厂来创建对象
Foo.any_instance.should_receive(:ask_bar_to_do_something)
Factory(:foo)
否则
foo = Foo.new(:attr1 => 'value1', :attr2 => 'value2')
foo.should_receive(:ask_bar_to_do_something)
foo.save