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

Test::WWW::Mechanize::CGIApp - Test::WWW::Mechanize for CGI::Application

  # 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

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 "run" method. For applications that use CGI::Application::Dispatch it will call the "dispatch" 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!

Behaves like, and calls, Test::WWW::Mechanize's "new" method. It optionally uses an "app" 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 "app" parameter or set it later using the "app" method.

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

  # or

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

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 modules which may be of interest: Test::WWW::Mechanize, WWW::Mechanize.

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

George Hartzell, "<hartzell@alerce.com>"

based on Test::WWW::Mechanize::Catalyst by Leon Brocard, "<acme@astray.com>".

Copyright (C) 2007, George Hartzell

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

2007-07-12 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.