SYNOPSIS

  # We're in a t/*.t test script...
  use Test::WWW::Mechanize::CGIApp;

my $mech = Test::WWW::Mechanize::CGIApp->new;

# test a class that uses CGI::Application calling semantics. # (in this case we'll new up an instance of the app and call # its ->run() method) # $mech->app("My::WebApp"); $mech->get_ok("?rm=my_run_mode&arg1=1&arg2=42");

# test a class that uses CGI::Application::Dispatch # to locate the run_mode # (in this case we'll just call the ->dispatch() class method). # my $dispatched_mech = Test::WWW::Mechanize::CGIApp->new; $dispatched_mech->app("My::DispatchApp"); $mech->get_ok("/WebApp/my_run_mode?arg1=1&arg2=42");

# create an anonymous sub that this class will use to # handle the request. # # this could be useful if you need to do something novel # after creating an instance of your class (e.g. the # fiddle_with_stuff() below) or maybe you have a unique # way to get the app to run. # my $custom_mech = Test::WWW::Mechanize::CGIApp->new; $custom_mech->app( sub { require "My::WebApp"; my $app = My::WebApp->new(); $app->fiddle_with_stuff(); $app->run(); }); $mech->get_ok("?rm=my_run_mode&arg1=1&arg2=42");

# at this point you can play with all kinds of cool # Test::WWW::Mechanize testing methods. is($mech->ct, "text/html"); $mech->title_is("Root", "On the root page"); $mech->content_contains("This is the root page", "Correct content"); $mech->follow_link_ok({text => 'Hello'}, "Click on Hello"); # ... and all other Test::WWW::Mechanize methods

DESCRIPTION

This package makes testing CGIApp based modules fast and easy. It takes advantage of Test::WWW::Mechanize to provide functions for common web testing scenarios. For example:

$mech->get_ok( $page ); $mech->title_is( "Invoice Status", "Make sure we're on the invoice page" ); $mech->content_contains( "Andy Lester", "My name somewhere" ); $mech->content_like( qr/(cpan|perl)\.org/, "Link to perl.org or CPAN" );

For applications that inherit from CGI::Application it will handle requests by creating a new instance of the class and calling its \*(C`run\*(C' method. For applications that use CGI::Application::Dispatch it will call the \*(C`dispatch\*(C' class method. If neither of these options are the right thing, you can set a reference to a sub that will be used to handle the request.

This module supports cookies automatically.

Check out Test::WWW::Mechanize for more information about all of the cool things you can test!

CONSTRUCTOR

\$1

Behaves like, and calls, Test::WWW::Mechanize's \*(C`new\*(C' method. It optionally uses an \*(L"app\*(R" parameter (see below), any other parameters get passed to Test::WWW::Mechanize's constructor. Note that you can either pass the name of the CGI::Application into the constructor using the \*(L"app\*(R" parameter or set it later using the \*(C`app\*(C' method.

use Test::WWW::Mechanize::CGIApp; my $mech = Test::WWW::Mechanize::CGIApp->new;

# or

my $mech = Test::WWW::Mechanize::CGIApp->new(app => 'TestApp');

METHODS

This method provides a mechanism for informing Test::WWW::Mechanize::CGIApp how it should go about executing your run_mode. If you set it to the name of a class, then it will load the class and either create an instance and ->run() it (if it's CGI::Application based), invoke the ->dispatch() method if it's CGI::Application::Dispatch based, or call the supplied anonymous subroutine and let it do all of the heavy lifting.

RELATED TO Test::WWW::Mechanize::CGIApp…

Related modules which may be of interest: Test::WWW::Mechanize, WWW::Mechanize.

Various implementation tricks came from Test::WWW::Mechanize::Catalyst.

AUTHOR

George Hartzell, \*(C`<[email protected]>\*(C'

based on Test::WWW::Mechanize::Catalyst by Leon Brocard, \*(C`<[email protected]>\*(C'.

COPYRIGHT

Copyright (C) 2007, George Hartzell

This module is free software; you can redistribute it or modify it under the same terms as Perl itself.