项目是用 sidekiq 做异步处理的,使用了 sidekiq-grouping 批量处理。现在正在写单元测试。已有功能代码不可以修改的情况下,我做的单元测试遇到的问题。 work 的定义大致如下
class LogUpdateWorker
include Sidekiq::Worker
def perform(group)
code
end
end
调用 work 代码大致如下
LogUpdateWorker.perform_async(100, { :a => 1})
问题来了,定义 work 的时候我们可以看到传入参数只有一个。调用的时候传入了俩个参数。rails 项目跑着没问题。我也看了下,传入多个参数的时候,应该是被 sidekiq-grouping 处理过了,做了类似*group,传入不定参数的处理。 我的单元测试用 Sidekiq::Testing.inline! 这种方式 或者用默认的方式然后手动 drain 执行异步处理,都会报传入参数错误。 wrong number of arguments (given 2, expected 1)