Setting Request Body (in stories in particular)


#1

I’m trying to set my request body in my tests (the application is a
web service that takes large XML files in PUT requests).

If you do this:

put :update, :body => xml

You get a request with an empty body, and a field in the header called
“body” set to the XML. You can set the body date in controller specs
by calling

request.env[‘RAW_POST_DATA’] = xml

But that doesn’t work in stories (request is nil), and it’s not very
elegant, anyway. Does anyone know how to set a request body in a
scenario step?


#2

On 19 Feb 2009, at 03:36, Michael S. wrote:

request.env[‘RAW_POST_DATA’] = xml

But that doesn’t work in stories (request is nil), and it’s not very
elegant, anyway. Does anyone know how to set a request body in a
scenario step?

I don’t know if you’re aware of it, but assuming you’re testing a
Rails app, your scenario steps are running inside a Rails
ActionController::Integration::Session

The documentation for the #put method is here:

http://api.rubyonrails.org/classes/ActionController/Integration/Session.html#M000420

Matt W.
http://blog.mattwynne.net
http://www.songkick.com