ruby on rails - how to test that service object is initialized with the correct params? -


in rails app have background job calls service object

class myjob < activejob::base   def perform( obj_id )     return unless object = object.find(obj_id)     myserviceobject.new(object).call   end end 

i can test job calls service object follows:

describe myjob, type: :job   let(:object) { create :object }   'calls myserviceobject'     expect_any_instance_of(myserviceobject).to receive(:call)     myjob.new.perform(object)   end end 

but how test job initializes service object correct params?

describe myjob, type: :job   let(:object) { create :object }   'initializes myserviceobject object'     expect( myserviceobject.new(object) ).to receive(:call)     myjob.new.perform(object)   end end 

i want achieve above, fails expects 1 received 0.

what correct way test class initialized correctly?

apparently fix adilbiy's answer turned down, here's updated answer:

describe myjob, type: :job   let(:object) { create :object }   'initializes myserviceobject object'     = myserviceobject.new(object)     expect(myserviceobject).to receive(:new).with(object).and_return(so)     myjob.new.perform(object)   end end 

by mocking myserviceobject.new expect(myserviceobject).to receive(:new).with(object), overwrite original implementation. however, myjob#perform work, need myserviceobject.new return object - can .and_return(...).

hope helps!


Comments

Popular posts from this blog

Load Balancing in Bluemix using custom domain and DNS SRV records -

oracle - pls-00402 alias required in select list of cursor to avoid duplicate column names -

python - Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] error -