Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Can';t检验使用延迟作业时是否调用了方法';延迟';方法_Ruby On Rails_Delayed Job_Mocha.js_Testunit - Fatal编程技术网

Ruby on rails Can';t检验使用延迟作业时是否调用了方法';延迟';方法

Ruby on rails Can';t检验使用延迟作业时是否调用了方法';延迟';方法,ruby-on-rails,delayed-job,mocha.js,testunit,Ruby On Rails,Delayed Job,Mocha.js,Testunit,我使用Mocha、Test::Unit和delayed_作业,希望测试是否执行了mailer方法,如下所示: test "should send info about paid payment" do payment = Payment.new :contractor_name => "notempty", :address => "notempty" UserMailer.expects(:send_payment_info) payment.set

我使用Mocha、Test::Unit和delayed_作业,希望测试是否执行了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:nil类的未定义方法
deliver
app/models/payment.rb:33:in
set_payment!' 测试/单位/付款测试。rb:50:在“测试”中,你应该发送关于付款的信息


我不知道怎么解决这个问题?也许我应该以不同的方式使用moch UserMailer?

这种解决方法有助于:

UserMailer.stubs(:delay).returns UserMailer
UserMailer.expects(:send_payment_info)
我不知道这是不是合法的方式,但它是有效的