[rspec-users] Spec rendering xml.erb suspectly doen't work

Pat Maddox pergesu at gmail.com
Tue Nov 25 11:23:07 EST 2008


"Peter Ehrenberg" <pe at dipe.de> writes:

> I have to spec an contoller action witch is (only) rendering an
> xml.erb template.
> The action looks like this:
>
>   def index
>     respond_to do |format|
>       format.xml
>     end
>   end
>
> The "index.xml.erb" template includes (for now) only the string "XML".
>
> This works fine if I requests the action with curl -H "ACCEPT: text/xml" ...
> It also running fine, if I write a conventional rails functional test.
>
> But specing this, it render nothing but a single blank.
>
>   describe PostsController do
>     it "should render xml" do
>       request.env["HTTP_ACCEPT"] = "application/xml"
>       get :index
>       response.body.should == "XML"
>     end
>   end
>
>   $ spec spec
>   1)
>   'PostsController should render xml' FAILED
>   expected: "XML",
>        got: " " (using ==)
>   /home/petehr/Project/test/spec/controllers/posts_controller_spec.rb:7:
>
> I've done some puts-debugging like this
>
>   format.xml { puts ">>>#{render_to_string}<<<" }
>
> in the actions respond_to block. Running the curl command or the functional
> test shows the expected result ">>>XML<<<". But runing the spec again
> shows only a blank: '>>> <<<'.
>
> Any hints?
>
> /Peter
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

By default, controller specs don't actually render the views.  You need
to call integrate_views from within your example group to make them
render.

Pat


More information about the rspec-users mailing list