指定对象在RSpec中不接收任何消息

时间:2015-04-09 05:01:38

标签: ruby rspec

我知道如何指定对象不应该收到特定的消息:

expect(File).to_not receive(:delete)

我如何指定它根本不应该接收任何消息?像

这样的东西
expect(File).to_not receive_any_message

2 个答案:

答案 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