Incorrect require sidekiq testing
在系统中有一个 sidekiq worker 被定义成在 order 创建成功后的30分钟执行:
在 test_helper
中我们 require 'sidekiq/testing'
这会默认使用 Sidekiq::Testing.fake!
它会使用 ruby Array 来作为队列运行 worker,原本应该30分钟后才执行的任务也被立即执行了,造成 order 状态被改成已过期,使测试失败。
另外一个问题默认 fake 模式下,单个 test 执行却能够成功运行
bin/rails test test/models/discount_code_test.rb:155
造成这个的原因是 require 'sidekiq/testing'
没有写在被所有 tests require 的 test_helper.rb 文件中,而只在某些测试文件中require,
如下面的代码片段来自 test/integration/api/v1/coupons_controller_test.rb 文件