对于某种情况,我们在Ruby中为某个制造商字符串grep二进制文件。我想在Rspec中创建关联的Mock对象。 我尝试了以下但是没有帮助:
File.stub!(:exist?).with(<binary_file>).and_return(true)
File.stub!(:read?).with(<binary_file>).and_return('XYZ')
我在这里缺少什么?
答案 0 :(得分:0)
首先,从!
中移除#stub
,它不会在较新版本的RSpec中使用。其次,stub(:read?)
应为stub(:read)
,因为它不是谓词方法。
如果没有看到实施代码,那些改变应该会让你朝着正确的方向前进。
那就是说,在可以避免的地方,我倾向于不同意这样的存根类方法,因为通过测试存在很大的状态泄漏风险。我会设计在文件中进行搜索的组件接受IO
的实例,然后传入一个完全是一次性的模拟对象变得容易得多。