5
我有两个模型,Foo和Bar。 Foo有一个叫做ask_bar_to_do_something的方法,它在Foo的一个实例被保存后被调用。此方法不会更改此Foo实例的状态。如何测试对象上是否调用方法 - Rails RSpec
我想使这个方法返回1,并创建一个lambda块,创建Foo对象并检查返回值。有一个更好的方法吗?
谢谢。
我有两个模型,Foo和Bar。 Foo有一个叫做ask_bar_to_do_something的方法,它在Foo的一个实例被保存后被调用。此方法不会更改此Foo实例的状态。如何测试对象上是否调用方法 - Rails RSpec
我想使这个方法返回1,并创建一个lambda块,创建Foo对象并检查返回值。有一个更好的方法吗?
谢谢。
为什么不嘲笑对象并期待方法调用?
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
非常感谢,德克斯特。这正是我正在寻找的。 – AdamNYC
这是'should'语法吗?任何人都可以分享'expect'语法如果可用? – ianstarz
@ianstarz'expect_any_instance_of(Foo).to接收(:ask_bar_do_do_something)' – rxgx