1

我在我的项目中使用 dashing-rails https://github.com/gottfrois/dashing-rails。它在 rails env 负载上运行 rufus-scheduler 作业。

当我运行集成测试(rspec、capybara、selenium-driver)时,由于 rufus-scheduler 超时错误,我的一些测试随机失败。有没有办法在测试环境中消除 rufus-scheduler 错误或完全禁用 rufus?我不喜欢在我的代码库上做 rails_env=test,所以任何其他解决方案都会受到赞赏。

示例错误如下所示:

{ 283064 rufus-scheduler intercepted an error:
  283064   job:
  283064     Rufus::Scheduler::EveryJob "10s" {}
  283064   error:
  283064     283064
  283064     Timeout::Error
  283064     Waited 3 sec
4

1 回答 1

0

rufus-scheduler #on_error 可能会有所帮助。它记录在https://github.com/jmettraux/rufus-scheduler#rufusscheduleron_errorjob-error

例如:

if rails_env == 'test' # set the handler only when testing...
  def Dashing.scheduler.on_error(job, error)
    # keep silent, do nothing
  end
end

您似乎不想将 Rails env 设置为“测试”以进行集成测试,因此您必须找到一种方法来确定何时覆盖调度程序 #on_error 方法,这是您的问题。

此外,rufus-scheduler 不会引发 Timeout::Error 的实例,它会引发 Rufus::Scheduler::TimeoutError 的实例,因此您看到的错误不是 rufus-scheduler 错误,它们只是被 rufus-scheduler 拦截。

如上所述,作为 rufus-scheduler 的作者,我没有编写 rufus-scheduler 来阅读诸如“Rufus scheduler 破坏集成测试”之类的标题,您的代码组合破坏了您的集成测试。承担责任。

于 2014-05-21T06:08:09.590 回答