X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial%2F08_Testing.pod;h=b247014ba20a0e083dbd43d13b372debac17d142;hb=e541538422e839971d0c91c47ea19029de01cfa5;hp=e0e629c5c6d5f23439e71a066f76fa5cd93b4ca2;hpb=0a2a4a5aba31b24b35d5b4b8dbf2cd0c36a7cb76;p=catagits%2FCatalyst-Manual.git diff --git a/lib/Catalyst/Manual/Tutorial/08_Testing.pod b/lib/Catalyst/Manual/Tutorial/08_Testing.pod index e0e629c..b247014 100644 --- a/lib/Catalyst/Manual/Tutorial/08_Testing.pod +++ b/lib/Catalyst/Manual/Tutorial/08_Testing.pod @@ -188,7 +188,7 @@ editor and enter the following: # Can also do: # use Test::WWW::Mechanize::Catalyst "MyApp"; - use ok "Test::WWW::Mechanize::Catalyst" => "MyApp"; + BEGIN { use_ok("Test::WWW::Mechanize::Catalyst" => "MyApp") } # Create two 'user agents' to simulate two different users ('test01' & 'test02') my $ua1 = Test::WWW::Mechanize::Catalyst->new; @@ -349,7 +349,11 @@ maintain both a "production database" for your live application and a "testing database" for your test cases. One advantage to L is that it runs your full application; however, this can complicate things when -you want to support multiple databases. One solution is to allow the +you want to support multiple databases. + +=head2 DATABASE CONFIG SWITCHING IN YOUR MODEL CLASS + +One solution is to allow the database specification to be overridden with an environment variable. For example, open C in your editor and change the C<__PACKAGE__-Econfig(...> declaration to resemble: @@ -376,6 +380,50 @@ launch your normal application without the C environment variable defined, it will default to the same C as before. +=head2 DATABASE CONFIG SWITCHING USING MULTIPLE CONFIG FILES + +By utilizing Ls functionality for loading +multiple config files based on environment variables you can override your +default (production) database connection settings. + +Setting C<$ENV{ MYAPP_CONFIG_LOCAL_SUFFIX }> to 'testing' in your test script +results in loading of an additional config file named myapp_testing.conf after +myapp.conf which will override any parameters in myapp.conf. + +You should set the environment variable in the BEGIN block of your test script +to make sure it's set before your Catalyst application is started. + +The following is an example for a config and test script for a DBIx::Class +model named MyDB and a controller named Foo: + +myapp_testing.conf: + + + + dsn dbi:SQLite:myapp.db + + + + +t/controller_Foo.t: + + use strict; + use warnings; + use Test::More; + + BEGIN { + $ENV{ MYAPP_CONFIG_LOCAL_SUFFIX } = 'testing'; + } + + eval "use Test::WWW::Mechanize::Catalyst 'MyApp'"; + plan $@ + ? ( skip_all => 'Test::WWW::Mechanize::Catalyst required' ) + : ( tests => 2 ); + + ok( my $mech = Test::WWW::Mechanize::Catalyst->new, 'Created mech object' ); + + $mech->get_ok( 'http://localhost/foo' ); + =head1 AUTHOR @@ -385,6 +433,6 @@ Please report any errors, issues or suggestions to the author. The most recent version of the Catalyst Tutorial can be found at L. -Copyright 2006-2008, Kennedy Clark, under Creative Commons License +Copyright 2006-2010, Kennedy Clark, under Creative Commons License (L).