On Sat, 26 Jan 2002 00:23:40 -0500 "Perrin Harkins" <[EMAIL PROTECTED]> wrote:
> But what about the actual data? In order to test my $product->name() > method, I need to know what the product name is in the database. That's > the hard part: writing the big test data script to run every time you > want to run a test (and probably losing whatever data you had in that > database at the time). > > This has been by far the biggest obstacle for me in testing, and from > Gunther's post it sounds like I'm not alone. If you have any ideas > about how to make this less painful, I'd be eager to hear them. You're not alone ;) here is my solution. * All datasource are maintained with separate config file * Generate config file for testing * Create database and tables for testing (called test_foo) * Insert dummy data into test_foo * Test 'em * Drop dummy data Then my test script has both client side testing and server side testing, like this. use Test::More 'no_plan'; BEGIN { do 'db_setup.pl'; } END { do 'db_teardown.pl'; } # server-side my $product = Product->create({ name => 'foo' }); # client-side my $ua = LWP::UserAgent->new; my $res = $ua->request(GET "/foo/bar"); like $res->content, qr/foo/; my $form = HTML::Form->parse($res->content); my $req2 = $form->click; my $res2 = $ua->request($req); like $res2->content, qr/blah/; # server-side my @p = Product->retrieve_all; is @p, 2; -- Tatsuhiko Miyagawa <[EMAIL PROTECTED]>