我有一个看起来像这样的方法:
def set_container_bg
open(self.page.permanent_screenshot) do |file|
# some logic with file
end
end
我正在尝试创建一个rspec测试,但我想在set_container_bg中模拟open方法,以便返回我期望的内容?
当我说它返回时,我的意思是'file'
是我知道如何管理的。
我该怎么办?
答案 0 :(得分:0)
由于内核混合到您正在测试的对象中,您可以在您正在测试的对象中存根open
方法。
想象一下,你正在测试一个名为container
的对象,这样的事情可以解决这个问题:
file = double(File)
container.stub(:open) { |&block| block.yield file }
答案 1 :(得分:0)
假设您有file
个对象,则下面的内容将通过
Object.any_instance.stub(:open).with(anything()).and_return file
open(self.page.permanent_screenshot).should eq file