我知道如何指定对象不应该收到特定的消息:
expect(File).to_not receive(:delete)
我如何指定它根本不应该接收任何消息?像
这样的东西expect(File).to_not receive_any_message
答案 0 :(得分:14)
听起来你只想用一个你没有预期的双重替换有问题的对象(所以任何方法调用都会导致错误)。在你的确切情况下,你可以做
stub_const("File", double())
答案 1 :(得分:1)
我不确定用例是什么。但以下是我能提出的唯一直接答案:
methods_list = File.public_methods # using 'public_methods' for clarity
methods_list.each do |method_name|
expect(File).to_not receive(method_name)
end
如果您想要涵盖所有方法(即不仅仅是public
个方法):
# readers, let me know if there is a single method to
# fetch all public, protected, and private methods
methods_list = File.public_methods +
File.protected_methods +
File.private_methods