在rails作业上禁用ruby进行测试

div*_*ero 7 ruby rspec ruby-on-rails delayed-job rails-activejob

我正在用rspec编写控制器测试,在完成操作后,我的工作应该发送给管理员用户的电子邮件.但我想为我的测试禁用这项工作或以某种方式嘲笑它.我怎样才能做到这一点?

我正在使用delayed_job_active_record+ daemons宝石.

class AdminNotificationJob < ActiveJob::Base
  queue_as :default

  def perform(method, parameter)
    User.admin.includes(:profile).each do |admin|
      AdminMailer.send(method, admin, parameter).deliver_later
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

And*_*eko 10

#config/environment/test.rb
config.active_job.queue_adapter = :test

# in spec
expect { your_action_that_triggers_job_enqueuing }
  .to have_enqueued_job(AdminNotificationJob)
  .with(your_arguments)
Run Code Online (Sandbox Code Playgroud)