我有一个带有方法location
的模型族,该方法合并了其他对象、成员的location
个输出.(成员与家庭有关,但这在这里并不重要.)
例如,给定
- 成员_1有
location
=="圣地亚哥(旅行,5月15日返回)" - 成员2有
location
个=='San Diego'
家庭地点可能会返回"圣地亚哥(会员1旅行,5月15日返回)",具体细节并不重要.
简化家庭测试.地点,我想登记会员.地方但是,我需要它返回两个不同的(指定的)值,如上面的示例所示.理想情况下,这些将基于属性member
,但只需在序列中返回不同的值就可以了.在RSpec中有没有办法做到这一点?
可以覆盖该成员.例如,在每个测试位置,例如
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运行一系列示例时,它不会恢复原始类,因此这种重写会"毒害"后续示例.
那么,有没有办法让存根方法在每次调用时返回不同的指定值?