这里是rspec新手。我知道我可以使用'allow()。toreceive()。and_return'来测试被测对象的方法,但是如果我要测试的对象本身使用的是另一个对象,该对象具有昂贵的方法,我该如何对expensiv进行测试该方法中的e部分,但仍然测试该方法的其余部分?
如果我有类似的方法
class Foo
def process
data = DataModel.fetch_data #<-- the expensive process.
if verify(data)
[do things]
end
end
private
def verify(data)
[...]
end
end
那么,我将如何编写一个rspec测试,以便在该方法中向处理方法提供测试数据,以便我可以检查一下verify和“事情”是否正常工作?我不想执行DataModel.fetch,因为它既耗时又昂贵。 (导轨5.2)
答案 0 :(得分:1)
您可以这样做:
fetched_data = instance_double("TheClassReturnedFrom#fetch_data")
allow(DataModel).to receive(:fetch_data).and_return(fetched_data)