Phil Lawrence on 28 Jul 2004 14:04:43 -0000 |
Phil Lawrence wrote: ... references to Test::Builder, whose constructor returns singletons. I think this may help, but I'm not sure about implementation. OK, I checked out how Andy Lester did it in Test::WWW::Mechanize, and went from there. Basically, it hinges on the builder() method of Test::More. This works, but only exposes Test::Builder methods to my used modules. Subclassing Test::More correctly might yet expose it's functions to my used modules. ./t/test_driver.pl ------------------ #!/usr/local/bin/perl use warnings; use strict; use diagnostics; use lib './t'; use Test::More qw( no_plan ); BEGIN: { # a subclass of Test::WWW::Mechanize (with @ISA, Dieter!) use_ok( 'T::Mechanize' ); use_ok( 'T::GoToApp' ); } # get Test::Builder object that underlies Test::More my $Test = Test::More->builder; my $mech = T::Mechanize->new( autocheck => 1 ); isa_ok( $mech, 'T::Mechanize', 'Get T::Mechanize object' ); # here we use the functionality (and tests) I # split out into another file T::GoToApp::test( $mech, $Test ); ok( defined $mech->find_link(text => 'EXIT'), 'Find EXIT link' ), $mech->follow_link( text => 'EXIT' ); $mech->title_is( 'User Logout', 'Exit/Logout' ); ------------------ ./t/T/GoToApp.pm ------------------ package T::GoToApp; sub test { my $mech = shift; my $Test = shift; $mech->get( 'https://foo.com:999/' ); $Test->ok( defined $mech->find_link( text=>'Enter Secure Area' ) , 'Find Login link' ); $mech->follow_link( text => 'Enter Secure Area' ); $mech->title_is( 'User Login', 'Get Login Page' ); $mech->submit_form ( form_name => 'loginform', fields => { sid => '999999999', PIN => '999999999', } ); $Test->ok( $mech->title eq 'Main Menu', 'Login' ); $Test->ok( defined $mech->find_link( text=>'Personal Information' ) , 'Find Personal Information link' ); $mech->follow_link( text => 'Personal Information' ); $mech->title_is( 'Personal Information' , 'Get Personal Information page' ); $Test->ok( defined $mech->find_link( text=>'International Travel Registration' ) , 'Find International Travel Registration link' ); $mech->follow_link( text=>'International Travel Registration' ); $mech->title_is( 'International Travel Registration' , 'Get International Travel Registration page' ); } 1; ------------------ - **Majordomo list services provided by PANIX <URL:http://www.panix.com>** **To Unsubscribe, send "unsubscribe phl" to majordomo@lists.pm.org**
|
|