我如何测试使用rspec调用ruby proc?

时间:2014-08-22 18:35:34

标签: ruby rspec

我试图测试在rspec规范中调用proc。我能想出的最好的是:

my_proc = proc { throw :my_proc_was_called }
expect {
  my_proc.call
}.to throw_symbol :my_proc_was_called

但是这假设没有别的东西可以捕获我抛出的符号,而且我不会介意检查参数的方法,而不是将参数匹配器放在proc本身中。使用rspec模拟,我可以检查一个对象是否接收到一个方法,甚至在检查参数后调用原始方法,但是我找不到任何类似于proc的方便。

Chris Heald建议只是听一下proc接收call但是如果该块被yield调用就会崩溃,如下例所示:

my_class = Class.new do
  def call_proc
    yield
  end
end
my_proc = proc { }
expect(my_proc).to receive(:call)
my_class.new.call_proc(&my_proc)

0 个答案:

没有答案