Ruby Rspec,查找工人被递归调用的次数

问题描述 投票:0回答:1

我需要在 Rspec 上测试一个工作程序,以查找同一工作程序以递归方式被一次又一次调用的次数。 例如:

Class Myworker
  def perform(id)
    model = Mymodel.find(id)
    associated_records = Mymodel.users.limit(1000)
    associated_records.each(&:destroy)
    if Mymodel.users.exists?
      Myworker.perform_async(id)
    end
  end
end

我需要为此编写 rpsec 来计算此迭代发生的次数,

我尝试对工作程序进行存根,并递增计数器,因为我对工作程序进行存根,所以它不会再次执行同一个工作程序,并且我对计数器 1 作为最终值感到震惊。如何在 RSPEC 中找到工人被递归调用的次数。

ruby-on-rails ruby rspec rubygems rspec-sidekiq
1个回答
0
投票

我将在这里提出一个框架挑战:在您的特定用例中,您不想递归地调用工作人员,但您只想使用

find_each
迭代地从
Mymodel
中删除所有用户,即

Class Myworker
  def perform(id)
    User.where(mymodel_id: id)
        .find_each do |user|
      user.destroy
    end
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.