का उपयोग कर हुक मैं चाहूँगा कि delayed_job कॉलबैक हुक कहा जाता हो रहे हैं सत्यापित करने के लिए है, लेकिन मैं कैसे RSpec यह करने के लिए, खासकर जब कक्षाओं की कई परतों शामिल कर रहे हैं पाने के लिए नहीं दिख रहा।कैसे delayed_job परीक्षण करने के लिए कॉलबैक RSpec
मान लिया जाये कि मैं इस तरह एक ActiveRecord मॉडल है:
class MyJob < ActiveRecord::Base
def perform
# do some stuff
end
def after(job)
# called by delayed_job after perform completes
end
end
सैद्धांतिक रूप, मैं इन पंक्तियों के साथ एक RSpec परीक्षण चाहते हैं (हालांकि मैं जानता हूँ कि यह सही नहीं है):
it 'should call the :after callback hook' do
my_job = MyJob.create
my_job.should_receive(:after).with(an_instance_of(Delayed::Backend::ActiveRecord::Job))
Delayed::Job.enqueue(my_job)
Delayed::Worker.new.work_off
end
मैंने स्टैक ओवरफ्लो, relishapp.com/rspec और अन्य सभी स्थानों पर लगाया है जिन पर मैं सोच सकता हूं। यह बहुत कठिन नहीं हो सकता है, है ना? (मैं शर्त लगाता हूं कि @zetetic उसकी नींद में जवाब जानता है ...;)
(चेतावनी: मेरा वास्तविक मामला माईजोब और डीजे के बीच 'शिम' वर्ग का उपयोग करता है। इस साधारण मामले का उत्तर अधिक जटिल अनुवर्ती हो सकता है -ऑन!)
आप केवल सत्यापित करने के लिए 'after' कहा जाता है देख रहे हैं, नहीं कर सके ' किसी भी शिकायत शांत => true) और कार्यकर्ता मौन करने .work_off वह: आप '.with (an_instance_of ...' आवश्यकता ड्रॉप नहीं की जाती है एक तरफ ध्यान दें के रूप में, मैं उपयोग करने के लिए विलंबित :: Worker.new (करते हैं मैं मानता हूं कि, एक अपवाद हो सकता है जिसके कारण मैं इसे देख नहीं रहा हूं। – Nick