这里是rspec新手。我知道我可以使用"allow((.to receive((.and _return"来截取被测对象的一个方法,但如果我正在测试的对象本身使用了另一个有昂贵方法的对象,我该如何截取该方法中的experiiv部分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测试,在那里我可以为流程方法提供测试数据,这样我就可以检查验证和"做事"是否正确?我不想执行DataModel.fetch,因为它既耗时又昂贵。(轨道5.2(
你可以做:
fetched_data = instance_double("TheClassReturnedFrom#fetch_data")
allow(DataModel).to receive(:fetch_data).and_return(fetched_data)