ruby-on-rails - 禁用 ruby​​ on rails 作业进行测试

标签 ruby-on-rails ruby rspec delayed-job rails-activejob

我正在使用 rspec 编写 Controller 测试,在操作完成后,我的工作应该向管理员用户发送电子邮件。但我想为我的测试禁用这项工作或以某种方式模拟它。我该怎么做?

我正在使用 delayed_job_active_record + daemons gem 。

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

最佳答案

#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)

关于ruby-on-rails - 禁用 ruby​​ on rails 作业进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40891740/

相关文章:

ruby-on-rails - Cucumber 和 Rspec 共享工厂女孩工厂

ruby-on-rails - Rspec/Rails : how to verify that no method of a class is called

ruby-on-rails - Rails 将附加参数传递给模型

ruby-on-rails - Rails 3 : nested_form, collection_select,accepts_nested_attributes_for 和 fields_for

ruby - 如何使用 RSpec 在 gem 中测试 Sinatra 应用程序?

ruby - 从 'cat' 输出着色 ruby​​ 语法

ruby-on-rails - Rails : How to validate password from input if there is not password field in database

jquery - 显示隐藏表,点击

ruby-on-rails-3 - 如何使用 Devise 和 rspec 测试 Rails3 引擎

ruby-on-rails - RSPEc - #<RoomsController :0x0000010534c050> 的未定义方法 `stubs'