пытается выполнить обновление до Rails 4.2, используя delayed_job_active_record. Я не устанавливал backend_job backend для тестовой среды, так как думал, что задания будут выполняться сразу же.
Я пытаюсь протестировать новый метод "deliver_later" с помощью Rspec, но я не уверен, как это сделать.
Старый код контроллера:
ServiceMailer.delay.new_user(@user)
Новый код контроллера:
ServiceMailer.new_user(@user).deliver_later
ИСПОЛЬЗУЕМЫЙ, чтобы проверить его так:
expect(ServiceMailer).to receive(:new_user).with(@user).and_return(double("mailer", :deliver => true))
Теперь я получаю ошибки, используя это. (Двойная "почтовая программа" получила неожиданное сообщение: deliver_later с (без аргументов))
Просто
expect(ServiceMailer).to receive(:new_user)
тоже не работает с методом < undefined `deliver_later 'для nil: NilClass
Я пробовал некоторые примеры, которые позволяют вам видеть, заданы ли задания с помощью test_helper в ActiveJob, но мне не удалось проверить, что правильная работа поставлена в очередь.
expect(enqueued_jobs.size).to eq(1)
Это передается, если включен test_helper, но он не позволяет мне проверять, отправляется ли оно правильно.
Что я хочу сделать:
- проверьте, что правильный адрес электронной почты поставлен в очередь (или выполняется сразу в тестовом env).
- с правильными параметрами (@user)
Любые идеи? спасибо