What's the best way to test delayed_job chains with rSpec?

后端 未结 3 744
天命终不由人
天命终不由人 2021-02-13 20:41

Currently when I have a delayed method in my code like the following:

CommentMailer.delay.deliver_comments(@comment, true)

I write something li

相关标签:
3条回答
  • 2021-02-13 21:09

    We can just have one more line in the before block as following:

    CommentMailer.stub(:delay).and_return(CommentMailer)
    

    Then you then can have the normal mock check as following:

    CommentMailer.should_receive(:deliver_comments).with(comment, true)
    
    0 讨论(0)
  • 2021-02-13 21:24
    describe '#perform' do
        subject do
          Delayed::Worker.delay_jobs = false
          proc { worker.perform() }
        end
    
        it { is_expected.to change { ActionMailer::Base.deliveries.length }.by(2) }
      end
    

    Set delayed job as false and u can test it like simple

    0 讨论(0)
  • 2021-02-13 21:27

    Here are some discussions about chaining methods in rSpec that I found helpful:

    Stubbing Chained Methods with Rspec

    http://groups.google.com/group/rspec/browse_thread/thread/6b8394836d2390b0#

    0 讨论(0)
提交回复
热议问题