Ошибка тестов Rspec для Ruby Thread

У меня есть рабочий метод, который выглядит так

      class ScoreWorker
  include Sidekiq::Worker
  sidekiq_options queue: 'score_worker'
  
  def perform(scores, notification, devices)
    threads = []
    scores.each do |gg|
      threads << Thread.new { PushNotificationService.new(notification, devices).deliver }
    end
    threads.each { |thr| thr.join }
  end

Я пишу тест rspec для своего рабочего

      describe ScoreWorker do
  self.use_transactional_fixtures
  before(:all) do
    Rails.cache.clear
  end

  describe '.perform' do
    self.use_transactional_fixtures
    context 'create' do
      it 'creates notification' do
        job = create(:job)
        notification = create(:notification)
        devices = create(:device)
        scores = ScoringService.new(job, 25).score
        worker = ScoreWorker.new
        expect do
          worker.perform(scores, notification, devices)
        end.to change(Notification, :count).by(1)
      end
    end
  end
end

Но всякий раз, когда я запускаю свои тесты, он продолжает давать сбой, поскольку rspec, похоже, не поддерживает многопоточность. Итак, мои объекты "Работа", "Уведомления" и "Устройства" пусты.

Как я могу запустить свои тесты при использовании рубиновых потоков в rspec

0 ответов

Другие вопросы по тегам