【发布时间】:2015-08-31 04:01:21
【问题描述】:
我正在使用 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 可能不是执行此操作的正确工具?
非常感谢任何帮助。
【问题讨论】:
标签: ruby rspec mocking rspec-mocks