最佳答案
我有一个模型家族与方法 location
,其中合并的 location
输出的其他对象,成员。(成员与家庭有关,但这并不重要。)
例如,给定
location
= = ‘ San Diego (travel,return 15 May)’location
= = ‘ San Diego’Location 可能返回“ San Diego (member _ 1 travel,return 15 May)”具体细节并不重要。
为了简化 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 运行一系列示例时,它都不会还原原始类,因此这种方法会覆盖后续示例。
那么,有没有一种方法可以让一个存根方法在每次调用中返回不同的、指定的值呢?