Cómo probar una acción del controlador que envía un archivo?RSpec send_file testing
Si lo hago con controller.should_receive(:send_file)
, la prueba falla con "Falta la plantilla" porque no se procesa nada.
Cómo probar una acción del controlador que envía un archivo?RSpec send_file testing
Si lo hago con controller.should_receive(:send_file)
, la prueba falla con "Falta la plantilla" porque no se procesa nada.
Otra forma en que funciona es:
controller.should_receive(:send_file).and_return{controller.render :nothing => true}
Para mí, esta captura el hecho de que el efecto secundario previsto de send_file
es disponer que no se represente nada más. (No obstante, es cierto que parece un poco flojo para que el talón de llamar a un método en el objeto original.)
Rails 4, RSpec 3:''and_return {value} 'está en desuso. Utilice 'and_return (value)' o un bloque de implementación sin 'and_return' en su lugar. –
También puede hacer esto:
result = get ....
result.body.should eq IO.binread(path_to_file)
Niza, ¿por qué no pensé en eso :) – Mirko
Para cualquier persona que vea esto usando versiones más recientes de RSpec, 'stub!' Ha quedado en desuso. Solo use 'stub' –
Y en Rspec 3, es' allow (controller) .to receive (: render) ' – mehulkar