0

对于某个场景,我们在 Ruby 中为某个制造商字符串 grep 一个二进制文件。我想在 Rspec 中创建关联的 Mock 对象。我尝试了以下方法,但没有帮助:

  File.stub!(:exist?).with(<binary_file>).and_return(true)
  File.stub!(:read?).with(<binary_file>).and_return('XYZ')

我在这里想念什么?

4

1 回答 1

0

首先,删除!from #stub,它在较新版本的 RSpec 中不使用。其次,stub(:read?)应该是stub(:read),因为它不是谓词方法。

在没有看到实现代码的情况下,这些更改应该会让您朝着正确的方向前进。

也就是说,在可以避免的情况下,我倾向于不同意这样的存根类方法,因为通过测试存在状态泄漏的相当大的风险。相反,我会设计在文件中进行搜索的组件以接受 的实例IO,然后传入完全一次性的模拟对象会变得更加容易。

于 2012-06-11T02:16:14.143 回答