使用rspec测试EventMachine计时器

时间:2013-09-19 15:43:06

标签: ruby rspec eventmachine

我有这样的方法:

def my_method(id)
  EventMachine.add_periodic_timer(10) do
    my_other_method(id)
  end
end

(显然简化了。)我如何编写一个rspec测试来检查my_other_method()被调用?或者这种情况反复发生?当我在测试中调用my_method()时,测试因为EM计时器而冻结。

我见过em-rspecem-spec,但无法看到如何将它们用于此特定测试。后者似乎假设您的EM计时器是自己编写的,而不是您正在测试的代码? (但也许我误解了?)

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以使用这些examples。 例如

# test that method is called 10 times
MyObject.should_receive(:my_other_method).exactly(10).times

# stub 10 calls for method my_other_method
MyObject.should_receive(:my_other_method).exactly(10).times.and_return(val1, val2, ..., val10)

您可以通过上面的链接找到以下其他示例