[rspec-users] send_file testing

vo.x v.ondruch at gmail.com
Tue Feb 24 08:03:09 EST 2009



On 23 Ún, 18:41, Nick Hoffman <n... at deadorange.com> wrote:
> On 22/02/2009, at 3:34 PM, vo.x wrote:
>
> > Hello all,
>
> > Is there some best practice how to test Rails controller action which
> > is using send_file method? Could you help me please?
>
> > Vit
>
> On 23/02/2009, at 2:43 AM, vo.x wrote:
>
> > Just to be clear, this is how the action looks:
>
> >  def download
> >    log = ActivityLog.find(params[:id])
> >    if log
> >      send_file log.path
> >    else
> >      flash[:notice] = _("Log file \"#{params[:id]}\" was not found.")
> >      redirect_to :action => 'index'
> >    end
> >  end
>
> > Vit
>
> Hi Vit. Just stub #send_file as normal. For example:
>
> before :each do
>    controller.stub!(:send_file).and_return ...
> end
>
> it "should send the requested file" do
>    controller.should_receive(:send_file).with(...).and_return ...
>    do_get
> end
>
> Cheers,
> Nick
> _______________________________________________
> rspec-users mailing list
> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users

Hello Nick,

Thank you for your feedback, but your solution has one problem which
actually led me to this question. If I will stub the send_file method
as you recommend, then later on is automatically called render method
and I will get following error:

ActionView::MissingTemplate in 'LogsController handling GET /logs/
test.log/download should find the log requested'
Missing template logs/download.erb in view path app/views

So there has to be set somewhere some flag, or provided some
meaningful response ... Im out of ideas :/


Vit


More information about the rspec-users mailing list