【问题标题】:Can't test if method was called when using delayed_job 'delay' method无法测试使用延迟作业“延迟”方法时是否调用了方法
【发布时间】:2012-12-15 00:21:17
【问题描述】:

我用了Mocha,Test::Unit和delayed_job,想测试一下mailer方法是否被执行,像这样:

  test "should send info about paid payment" do
    payment = Payment.new :contractor_name => "notempty", :address => "notempty"

    UserMailer.expects(:send_payment_info)

    payment.set_paid!

  end


  # model method
  def set_paid!
    self.status = 'paid'
    self.paid_at = Date.today
    self.save!

    UserMailer.delay.send_payment_info self
  end

不使用延迟方法测试按预期工作,但使用它(我在初始化配置中有 Delayed::Worker.delay_jobs = !Rails.env.test?)我得到:

NoMethodError:未定义的方法deliver' for nil:NilClass app/models/payment.rb:33:inset_paid!' test/unit/payment_test.rb:50:in `test_should_send_info_about_paid_payment'

我不知道如何解决这个问题?也许我应该以不同的方式处理 UserMailer?

【问题讨论】:

    标签: ruby-on-rails delayed-job mocha.js testunit


    【解决方案1】:

    这种解决方法有帮助:

    UserMailer.stubs(:delay).returns UserMailer
    UserMailer.expects(:send_payment_info)
    

    不知道这是否合法,但它有效

    【讨论】:

      猜你喜欢
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      • 2011-06-01
      • 2019-03-15
      相关资源
      最近更新 更多