GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  CATALYST::TEST (3)

.ds Aq ’

NAME

Catalyst::Test - Test Catalyst Applications

CONTENTS

SYNOPSIS



    # Helper
    script/test.pl

    # Tests
    use Catalyst::Test TestApp;
    my $content  = get(index.html);           # Content as string
    my $response = request(index.html);       # HTTP::Response object
    my($res, $c) = ctx_request(index.html);      # HTTP::Response & context object

    use HTTP::Request::Common;
    my $response = request POST /foo, [
        bar => baz,
        something => else
    ];

    # Run tests against a remote server
    CATALYST_SERVER=http://localhost:3000/ prove -r -l lib/ t/

    use Catalyst::Test TestApp;
    use Test::More tests => 1;

    ok( get(/foo) =~ /bar/ );

    # mock virtual hosts
    use Catalyst::Test MyApp, { default_host => myapp.com };
    like( get(/whichhost), qr/served by myapp.com/ );
    like( get( /whichhost, { host => yourapp.com } ), qr/served by yourapp.com/ );
    {
        local $Catalyst::Test::default_host = otherapp.com;
        like( get(/whichhost), qr/served by otherapp.com/ );
    }



DESCRIPTION

This module allows you to make requests to a Catalyst application either without a server, by simulating the environment of an HTTP request using HTTP::Request::AsCGI or remotely if you define the CATALYST_SERVER environment variable. This module also adds a few Catalyst-specific testing methods as displayed in the method section.

The get and request functions take either a URI or an HTTP::Request object.

INLINE TESTS WILL NO LONGER WORK

While it used to be possible to inline a whole test app into a .t file for a distribution, this will no longer work.

The convention is to place your Catalyst test apps into t/lib in your distribution. E.g.: t/lib/TestApp.pm, t/lib/TestApp/Controller/Root.pm, etc.. Multiple test apps can be used in this way.

Then write your .t files like so:



    use strict;
    use warnings;
    use FindBin $Bin;
    use lib "$Bin/lib";
    use Test::More tests => 6;
    use Catalyst::Test TestApp;



METHODS

CW$content = get( ... )

Returns the content.



    my $content = get(foo/bar?test=1);



Note that this method doesn’t follow redirects, so to test for a correctly redirecting page you’ll need to use a combination of this method and the request method below:



    my $res = request(/); # redirects to /y
    warn $res->header(location);
    use URI;
    my $uri = URI->new($res->header(location));
    is ( $uri->path , /y);
    my $content = get($uri->path);



Note also that the content is returned as raw bytes, without any attempt to decode it into characters.

CW$res = request( ... );

Returns an HTTP::Response object. Accepts an optional hashref for request header configuration; currently only supports setting ’host’ value.



    my $res = request(foo/bar?test=1);
    my $virtual_res = request(foo/bar?test=1, {host => virtualhost.com});



($res, CW$c) = ctx_request( ... );

Works exactly like request, except it also returns the Catalyst context object, $c. Note that this only works for local requests.

action_ok($url [, CW$test_name ])

Fetches the given URL and checks that the request was successful. An optional second argument can be given to specify the name of the test.

action_redirect($url [, CW$test_name ])

Fetches the given URL and checks that the request was a redirect. An optional second argument can be given to specify the name of the test.

action_notfound($url [, CW$test_name ])

Fetches the given URL and checks that the request was not found. An optional second argument can be given to specify the name of the test.

content_like( CW$url, CW$regexp [, CW$test_name ] )

Fetches the given URL and returns whether the content matches the regexp. An optional third argument can be given to specify the name of the test.

contenttype_is($url, CW$type [, CW$test_name ])

Verify the given URL has a content type of $type and optionally specify a test name.

SEE ALSO

Catalyst, Test::WWW::Mechanize::Catalyst, Test::WWW::Selenium::Catalyst, Test::More, HTTP::Request::Common

AUTHORS

Catalyst Contributors, see Catalyst.pm

COPYRIGHT

This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 CATALYST::TEST (3) 2013-11-24

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.