ruby-on-rails - tutorial - rspec with rails
¿Cuál es la mejor manera de probar las cadenas retrayed_job con rSpec? (3)
Actualmente, cuando tengo un método retrasado en mi código, como el siguiente:
CommentMailer.delay.deliver_comments(@comment, true)
Escribo algo como esto en mi especificación:
dj = mock("DelayProxy")
CommentMailer.should_receive(:delay).and_return(dj)
dj.should_receive(:deliver_comments).with(comment, true)
¿Hay una mejor manera de manejar esto y / o métodos encadenados como ese en rSpec en general?
Aquí hay algunas discusiones sobre métodos de encadenamiento en rSpec que encontré útiles:
Stubbing Chained Methods con Rspec
http://groups.google.com/group/rspec/browse_thread/thread/6b8394836d2390b0#
Podemos simplemente tener una línea más en el bloque anterior de la siguiente manera:
CommentMailer.stub(:delay).and_return(CommentMailer)
Entonces usted puede tener el control simulado normal de la siguiente manera:
CommentMailer.should_receive(:deliver_comments).with(comment, true)
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
Establezca el trabajo demorado como falso y puede probarlo como simple