RSpec send_file testing

From Googling around, it appears that render will also be called at some point .. but with no template, will cause an error.

The solution seems to be to stub it out as well:

controller.stub!(:render)

You can also do this:

result = get ....

result.body.should eq IO.binread(path_to_file)

Another way that works is:

controller.should_receive(:send_file).and_return{controller.render :nothing => true}

To me, this captures the fact that the intended side effect of send_file is to arrange that nothing else be rendered. (Albeit, it admittedly seems a bit wonky to have the stub call a method on the original object.)