使用capybara和delayed_job测试电子邮件

flu*_*aas 4 testing capybara ruby-on-rails-3

受到railscast(http://railscasts.com/episodes/275-how-i-test)一集的启发,我试图向我的应用添加一些请求规范.

使用delayed_job发送我的电子邮件,我没有找到一种简单的方法来测试我的水豚测试中的电子邮件发送.我试过了:

    it "emails user when requesting password reset" do
      ...(some user action that triggers sending an email)...
      Delayed::Worker.new.work_off
      ActionMailer::Base.deliveries.last.to.should include(user.email)
    end
Run Code Online (Sandbox Code Playgroud)

感谢任何提示或帮助!

emr*_*ass 8

更简单的解决方案:只需在config/initializers中创建初始化程序,例如delayed_job_config.rb

Delayed::Worker.delay_jobs = !Rails.env.test?
Run Code Online (Sandbox Code Playgroud)

在您的实际测试中,您甚至不需要知道已经部署了delayed_job来发送邮件,这使它们保持干净和简单.