ruby on rails - RSpec send_file testing
ruby-on-rails sendfile (3)
Desde Googling , parece que el render también se llamará en algún momento ... pero sin plantilla, causará un error.
La solución parece ser apagarlo también:
controller.stub!(:render)
¿Cómo probar una acción del controlador que envía un archivo?
Si lo hago con controller.should_receive(:send_file) prueba falla con "Falta plantilla" porque no se procesa nada.
Otra forma que funciona es:
controller.should_receive(:send_file).and_return{controller.render :nothing => true}
Para mí, esto captura el hecho de que el efecto secundario previsto de send_file es organizar que no se represente nada más. (Aunque, es cierto que parece un poco extraño que el stub llame un método al objeto original).
También puedes hacer esto:
result = get ....
result.body.should eq IO.binread(path_to_file)