我需要在 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 中找到工人被递归调用的次数。
我将在这里提出一个框架挑战:在您的特定用例中,您不想递归地调用工作人员,但您只想使用
find_each
迭代地从 Mymodel
中删除所有用户,即
Class Myworker
def perform(id)
User.where(mymodel_id: id)
.find_each do |user|
user.destroy
end
end
end