【问题标题】:Sidekiq fake mode run enqueued worker on testingSidekiq 伪造模式在测试中运行排队的工作人员
【发布时间】:2016-05-27 00:12:46
【问题描述】:

我目前在使用 Sidekiq 伪造模式测试 sidekiq worker 时遇到问题。

我把worker作为一个对象运行,worker会自己创建,满足一定条件的就是同一个worker。

问题是worker被推入jobs数组,这将jobs数组的大小增加了1,这是完美的!但它也继续运行工人!

worker = AvailablePromoJobBulkNotificationWorker.new
it "will create the next worker after the current worker performed." do
    expect { worker.perform(promo.id) }.to change(AvailablePromoJobBulkNotificationWorker.jobs, :size).by(1)
end

【问题讨论】:

    标签: ruby-on-rails ruby rspec sidekiq


    【解决方案1】:

    perform_async 是用于创建作业的方法。 perform 将实际运行工作代码。

    【讨论】:

    • 我知道perform 将运行worker,但perform_asyncperform_in 不应该只是创建一个作业而不运行它吗?
    • 在工人内部,我打电话给AvailablePromoJobBulkNotificationWorker.perform_in(10.minutes, promo.id)。它将AvailablePromoJobBulkNotificationWorker.jobs.size 增加1,但它继续执行它。 ——
    • 我不知道这种行为。
    • 这是否意味着我不能做那样的事情?或者它应该在上面的场景中正常工作,而你以前没有遇到过这样的问题?
    猜你喜欢
    • 2016-09-14
    • 2014-01-20
    • 2013-09-16
    • 2015-03-10
    • 1970-01-01
    • 2018-11-05
    • 2019-01-16
    • 2017-02-11
    • 1970-01-01
    相关资源
    最近更新 更多