Jason Purdy wrote:
> I'm lining up my next cgiapp project, based on my current
> frustration/itch: a test module.
>
> I've been all over the board with testing and I've identified four major
> methods:
>
> 1) Interface directly w/ the cgiapp
> 2) Write a www-mech script to interface w/ public web server
> 3) Ditto as #2, but interface with HTTP::Server::Simple::CGI
> 4) Ditto as #2, but interface with Apache::Test
>
> There are advantages and disadvantages to each, but here's what's
> important to me:
>
> A) Convenience of www-mech
> B) Coverage reporting
> C) Debugging
>
> So #1 is great for B & C, but not A.
> #'s 2-4 are great for A, but not B
> & C.
I have done B and C with 2 & 4 many times. You just need to work with
setting up Devel::Cover and in extra.conf.in and modperl_extra.pl (or
your startup.pl under #2). If you need more infor on this, just let me
know :)
> After some thought, I think I have the solution and am posing it
> here:
>
> How about a module that offers the easy-to-use www-mech interface, but
> underneath the layers, it will NOT use a web server, but instead,
> translate the request to a CGI/query object and interface directly w/
> the cgiapp?
I like this idea. Even though I'm a huge fan of Apache::Test, there are
times when it's not appropriate. However, there are many projects where
just testing the code is not enough. Server configuration also needs to
be tested.
> The Catalyst project offers something like this, through a subclass of
> Test::WWW::Mechanize.
>
> A test script could look something like this:
>
> use Test::WWW::Mechanize::CGIApp;
> use Test::More qw( no_plan ); # not yet
>
> my $mech = Test::WWW::Mechanize::CGIApp->new();
> $mech->set_cgiapp( 'My::CGIApp' );
> $mech->get( 'http://localhost/' );
I would think that something like:
$mech->set_hostname('localhost');
would be more appropriate. Some applications will have hostnames in
their actual HTML so being able to follow links from there would be nice.
I would also think you might need some sort of module => URL mapper and
also something that would work with instance scripts instead of just
modules. Something like this maybe:
$mech->map_urls(
'http://localhost/index.cgi' => 'App::Main',
'http://localhost/search.cgi' => 'App::Search',
'http://localhost/puchase.cgi' => 'App::Purchase',
'http://localhost/cart.cgi' => '/bin/cart.cgi',
);
> # this would translate to the default runmode -- could also use
> $mech->get( 'http://localhost?rm=other_runmode' );
>
> Anyway, just wanted to throw this out there and see if there was any
> interest. I have a rough skeleton going, but would love to get some
> expert help (the Catalyst project does this with some complex globbing,
> it looks like, which is a little over my head).
--
Michael Peters
Developer
Plus Three, LP
---------------------------------------------------------------------
Web Archive: http://www.mail-archive.com/suppressed/
http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: suppressed
For additional commands, e-mail: suppressed
Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.