我在项目中使用了dashing-rails https://github.com/gottfrois/dashing-rails。它在rails env load上运行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
答案 0 :(得分: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环境设置为" test"对于集成测试,所以你必须找到一种方法来确定何时覆盖调度程序#on_error方法,这是你的问题。
此外,rufus-scheduler不会引发Timeout :: Error的实例,它会引发Rufus :: Scheduler :: TimeoutError的实例,因此您看到的错误不是rufus-scheduler错误,它们只是被截获的鲁弗斯调度。
如上所述,作为rufus-scheduler的作者,我没有编写rufus-scheduler来读取像#34; Rufus调度程序打破集成测试等标题,你的代码组合打破了你的集成测试。承担责任。