我正在使用 rspec-mock 进行测试驱动开发。我开始实现一个类并使用 rspec-mock 模拟/存根其他类。尚未实现的类的模拟对象效果很好。但是,当我尝试模拟一个尚不存在的类的类方法时,我并没有成功。我的类“Hashes”应该有一个类方法“calculate_hashes”接收文件名并返回一个哈希值。
我试过
allow(Hashes).to receive(:calculate_hash) do |file|
# looks up what to return
end
这给出了错误“哈希不是一个类”。然后我实现了一个类“哈希”
class Hashes
end
然后只尝试以相同的方式存根类方法。当我将该方法添加到我的类定义中时,这会给出错误“哈希未实现:calculate_hash”:
class Hashes
def self.calculate_hash(filename)
end
end
它终于起作用了,我对此类方法的存根使用“allow(Hashes)”起作用,如上面的示例所示。我只是想知道是否有一种方法可以在不编写此类骨架的情况下完成此操作。
还是我可能试图以不恰当的方式完成某事?还是 rspec-mock 可能不是执行此操作的正确工具?
任何帮助是极大的赞赏。