.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" ======================================================================== .\" .IX Title "Test::WWW::Mechanize::CGIApp 3pm" .TH Test::WWW::Mechanize::CGIApp 3pm "2017-11-09" "perl v5.26.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Test::WWW::Mechanize::CGIApp \- Test::WWW::Mechanize for CGI::Application .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& # We\*(Aqre 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\*(Aqll 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\*(Aqll 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 => \*(AqHello\*(Aq}, "Click on Hello"); \& # ... and all other Test::WWW::Mechanize methods .Ve .SH "DESCRIPTION" .IX Header "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: .PP .Vb 6 \& $mech\->get_ok( $page ); \& $mech\->title_is( "Invoice Status", \& "Make sure we\*(Aqre on the invoice page" ); \& $mech\->content_contains( "Andy Lester", "My name somewhere" ); \& $mech\->content_like( qr/(cpan|perl)\e.org/, \& "Link to perl.org or CPAN" ); .Ve .PP For applications that inherit from CGI::Application it will handle requests by creating a new instance of the class and calling its \&\f(CW\*(C`run\*(C'\fR method. For applications that use CGI::Application::Dispatch it will call the \f(CW\*(C`dispatch\*(C'\fR 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. .PP This module supports cookies automatically. .PP Check out Test::WWW::Mechanize for more information about all of the cool things you can test! .SH "CONSTRUCTOR" .IX Header "CONSTRUCTOR" .SS "new" .IX Subsection "new" Behaves like, and calls, Test::WWW::Mechanize's \f(CW\*(C`new\*(C'\fR 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 \f(CW\*(C`app\*(C'\fR method. .PP .Vb 2 \& use Test::WWW::Mechanize::CGIApp; \& my $mech = Test::WWW::Mechanize::CGIApp\->new; \& \& # or \& \& my $mech = Test::WWW::Mechanize::CGIApp\->new(app => \*(AqTestApp\*(Aq); .Ve .SH "METHODS" .IX Header "METHODS" .ie n .SS "$mech\->app($app_handler)" .el .SS "\f(CW$mech\fP\->app($app_handler)" .IX Subsection "$mech->app($app_handler)" 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 \->\fIrun()\fR it (if it's CGI::Application based), invoke the \->\fIdispatch()\fR method if it's CGI::Application::Dispatch based, or call the supplied anonymous subroutine and let it do all of the heavy lifting. .SH "SEE ALSO" .IX Header "SEE ALSO" Related modules which may be of interest: Test::WWW::Mechanize, WWW::Mechanize. .PP Various implementation tricks came from Test::WWW::Mechanize::Catalyst. .SH "AUTHOR" .IX Header "AUTHOR" George Hartzell, \f(CW\*(C`\*(C'\fR .PP based on Test::WWW::Mechanize::Catalyst by Leon Brocard, \f(CW\*(C`\*(C'\fR. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (C) 2007, George Hartzell .PP This module is free software; you can redistribute it or modify it under the same terms as Perl itself.