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
Catalyst::Test(3) User Contributed Perl Documentation Catalyst::Test(3)

Catalyst::Test - Test Catalyst Applications

    # 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/ );
    }

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.

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';

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.

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'});

Alternately, you can pass in an HTTP::Request::Common object to set arbitrary request headers.

    my $res = request(GET '/foo/bar',
        X-Foo => 'Bar',
        Authorization => 'Bearer JWT_HERE',
        ...
    );

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

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.

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.

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.

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.

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

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

Catalyst Contributors, see Catalyst.pm

This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.
2020-08-21 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

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