Sidekiq工人没有排队等候测试

时间:2014-11-28 05:58:17

标签: ruby-on-rails sidekiq minitest

我正在使用sidekiq对作业进行排队以验证模型(链接)上字段的输入,并访问该链接以确保它在通过正则表达式验证时不返回404。

如果正则表达式验证通过且链接未返回404,我将另一个属性分配给同一模型但在另一个字段上。

通过调用方法触发worker,该方法在after_commit, on: :update回调

之后触发

如果'previous_changes ['我使用的json对象进行更改']'为true,则该方法仅触发worker。这样工人就不会继续被一遍又一遍地打电话。

所有这些都在开发中运行良好,通过QA自己确认多个用例

我正在尝试在MiniTest中编写一个测试,以确保当模型的json字段发生更改但工作者没有排队时工作人员排队,而在我的生活中,我无法弄清楚原因。

我正在测试对排队的工人的期望:

assert_difference 'WorkerClass.jobs.size' do
  site = sites(:site_from_fixtures)
  site.attribute_that_triggers_change = { "random" => "json_object" }
  site.save
end

测试返回:“预期:1,实际:0”

非常感谢任何输入!

1 个答案:

答案 0 :(得分:1)

通过安装test_after_commit gem。

修复了此问题

显然after_commit不会在测试中触发,除非您使用该gem或在test_helper中指定必要的更改。我选择了gem选项只是为了让事情变得更容易。