Протестируйте ActiveJob повтор, используя экземпляр double - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь протестировать конфигурацию повторных попыток работника ActiveJob, используя экземпляр double, но это не удается.

У меня есть это на работе:

class MyWorker < ApplicationJob
  retry_on MyError, wait: 30.minutes, attempts: 3

  def perform
    raise MyError
  end
end

Тест выглядит так:

  context "retry job" do
    let(:instance) { instance_double(MyWorker) }

    it "retries after 30 minutes" do
      allow(MyWorker).to receive(:new).and_return(instance)
      allow(instance).to receive(:perform_now)

      expect(instance).to receive(:retry_job)
        .with({ priority: nil, queue: nil, wait: 30.minutes.to_i })

      MyWorker.perform_now
    end
  end

Этот тест разбивается на:

    Failure/Error:
           expect(instance).to receive(:retry_job)
             .with({ priority: nil, queue: nil, wait: 30.minutes.to_i })

           (InstanceDouble(MyWorker) (anonymous)).retry_job({:priority=>nil, :queue=>nil, :wait=>1800})
               expected: 1 time with arguments: ({:priority=>nil, :queue=>nil, :wait=>1800})
               received: 0 times

Если я использую allow_any_instance_of для проверки повтора, тест пройден, но я хотел бы понять, как проверить это с использованием экземпляра double.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...