RSpec存根方法是否可以按顺序返回不同的值?
我有一个模型家庭模型,该模型location可以合并location其他对象(成员)的输出。(成员与家庭有联系,但这在这里并不重要。) 例如,给定 member_1具有location=='圣地亚哥(旅行,返回5月15日)' member_2具有location=='圣地亚哥' Family.location可能返回“圣地亚哥(member_1出行,5月15日返回)”,具体情况并不重要。 为了简化Family.location的测试,我想对Member.location进行存根。但是,我需要它返回两个不同的(指定的)值,如上例所示。理想情况下,它们将基于的属性member,但是简单地按顺序返回不同的值就可以了。有没有办法在RSpec中做到这一点? 可以在每个测试示例中覆盖Member.location方法,例如 it "when residence is the same" do class Member def location return {:residence=>'Home', :work=>'his_work'} if self.male? return {:residence=>'Home', :work=>'her_work'} end end @family.location[:residence].should == 'Home' end 但是我怀疑这是个好习惯。无论如何,当RSpec运行一系列示例时,它不会还原原始类,因此,这种重写会“毒化”后续示例。 因此,有没有一种方法可以使存根方法在每次调用时返回不同的指定值?