Come posso eseguire lo stub di un metodo solo alla prima chiamata e nella seconda deve comportarsi come previsto?metodo di stub solo alla prima chiamata con Rspec
ho il seguente metodo:
def method
do_stuff
rescue => MyException
sleep rand
retry
end
Voglio la prima chiamata di do_stuff
per aumentare MyException
, ma in seconda convocazione, si comporta normalmente. Ho bisogno di raggiungere questo per testare il mio blocco rescue
senza ottenere un ciclo infinito.
C'è un modo per raggiungere questo obiettivo?
Questo ha risolto un problema che ho incontrato con la funzione di sola lettura di ActiveRecord - I aveva un modello marcato in sola lettura ('def readonly; true; end') ma aveva bisogno di creare le istanze in un test e non voleva modificare il codice di test con il codice di produzione. La soluzione (in fabbrica factory_girl): 'after (: build) do | f | f.stub (: readonly?) {f.unstub (: readonly?); falso}; f.save !; FINE' –