【问题标题】:How to clear all active job queues before test如何在测试前清除所有活动作业队列
【发布时间】:2020-05-15 22:18:42
【问题描述】:

我有以下测试:

class ModelTest < ActiveJob::TestCase
  test 'test somethingb' do
    # test
  end
end

如果可能的话,我希望在任何测试之前清除所有队列。比如:

class ModelTest < ActiveJob::TestCase
  before_each do
   Sidekiq::Worker::clear_all
  end

  test 'test somethingb' do
    # test
  end
end

这当然行不通。我没有找到很多关于谷歌搜索的信息。那可能吗?如果有,怎么做?

【问题讨论】:

    标签: ruby-on-rails rails-activejob


    【解决方案1】:

    直接来自 sidekiq docs。

    清除所有工人的工作:

    Sidekiq::Worker.clear_all
    

    为了确保作业不会在测试之间徘徊:

    module SidekiqMinitestSupport
      def after_teardown
        Sidekiq::Worker.clear_all
        super
      end
    end
    
    class MiniTest::Spec
      include SidekiqMinitestSupport
    end
    
    class MiniTest::Unit::TestCase
      include SidekiqMinitestSupport
    end
    

    【讨论】:

      【解决方案2】:

      在您的test/test_helper.rb 中添加require 'sidekiq/testing'

      在你的测试before_each回调中,添加Sidekiq::Worker.clear_all

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-08
        • 1970-01-01
        • 2020-09-27
        • 2018-05-04
        • 1970-01-01
        • 2021-08-06
        • 2014-09-13
        相关资源
        最近更新 更多