[Catalyst] Unit tests for controllers based on Catalyst::Controller::REST?

James Russo jr at halo3.net
Wed Dec 29 04:32:11 GMT 2010


On Dec 28, 2010, at 11:06 PM, Peter Karman wrote:

> James Russo wrote on 12/28/10 6:47 PM:
>> Hello, 
>> 
>> 	Does anyone there some examples of unit tests for a controller which is based on Catalyst::Controller::REST? There was some discussion on the list a few years ago, and I think the conclusion was to use LWP directly and not Test::WWW::Mechanize::Catalyst. It seems that using the methods do not give you access to passing actual body content and content-type headers? There are getting overridden somewhere along the line. I'm going to continue to research it, but figured I'd ask here before I spend too much time on it. 
>> 
> 
> http://cpansearch.perl.org/src/KARMAN/CatalystX-CRUD-0.51/t/03-rest.t

It seems the following code actually creates a request where the body of the request is the URL encoded key/values, in this case would be "content=hello%20world". Since I need to send JSON or XML data, I needed to specify the content myself, so this wouldn't work. 

# create
ok( $res = request(
        POST( '/rest/file/testfile', [ content => 'hello world' ] )
    ),
    "POST new file"
);


This works as expected allowing me to specify the actual content and content-type of the request.

# create
ok($response = request(
			POST('/appointment','content-type' => 'application/json', 'content' => to_json($foo)
			), 
			"create new appointment"));

Just wanted to put it out there in the archives for the next person.

thanks,

-jr




More information about the Catalyst mailing list