Reformat/wrap paragraphs
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Tutorial / 08_Testing.pod
index eb33e62..e6d4b91 100644 (file)
@@ -56,41 +56,41 @@ L<Appendices|Catalyst::Manual::Tutorial::10_Appendices>
 
 =head1 DESCRIPTION
 
-You may have noticed that the Catalyst Helper scripts automatically 
-create basic C<.t> test scripts under the C<t> directory.  This 
-chapter of the tutorial briefly looks at how these tests can be used 
-not only to ensure that your application is working correctly at the 
-present time, but also provide automated regression testing as you 
-upgrade various pieces of your application over time.
+You may have noticed that the Catalyst Helper scripts automatically
+create basic C<.t> test scripts under the C<t> directory.  This chapter
+of the tutorial briefly looks at how these tests can be used not only to
+ensure that your application is working correctly at the present time,
+but also provide automated regression testing as you upgrade various
+pieces of your application over time.
 
 You can check out the source code for this example from the Catalyst
 Subversion repository as per the instructions in
 L<Catalyst::Manual::Tutorial::01_Intro>.
 
 For an excellent introduction to learning the many benefits of testing
-your Perl applications and modules, you might want to read 'Perl Testing: 
-A Developer's Notebook' by Ian Langworth and chromatic.
+your Perl applications and modules, you might want to read 'Perl
+Testing: A Developer's Notebook' by Ian Langworth and chromatic.
 
 
 =head1 RUNNING THE "CANNED" CATALYST TESTS
 
 There are a variety of ways to run Catalyst and Perl tests (for example,
-C<perl Makefile.PL> and C<make test>), but one of the easiest is with the
-C<prove> command.  For example, to run all of the tests in the C<t>
+C<perl Makefile.PL> and C<make test>), but one of the easiest is with
+the C<prove> command.  For example, to run all of the tests in the C<t>
 directory, enter:
 
     $ prove -wl t
 
-There will be a lot of output because we have the C<-Debug> flag 
-enabled in C<lib/MyApp.pm> (see the C<CATALYST_DEBUG=0> tip below for 
-a quick and easy way to reduce the clutter).  Look for lines like this 
-for errors:
+There will be a lot of output because we have the C<-Debug> flag enabled
+in C<lib/MyApp.pm> (see the C<CATALYST_DEBUG=0> tip below for a quick
+and easy way to reduce the clutter).  Look for lines like this for
+errors:
 
     #   Failed test 'Request should succeed'
     #   at t/controller_Books.t line 8.
     # Looks like you failed 1 test of 3.
 
-The redirection used by the Authentication plugins will cause several 
+The redirection used by the Authentication plugins will cause several
 failures in the default tests.  You can fix this by making the following
 changes:
 
@@ -156,8 +156,8 @@ command. For example:
 
     $ CATALYST_DEBUG=0 prove -wl t/01app.t
 
-Also note that you can also run tests directly from Perl without C<prove>.
-For example:
+Also note that you can also run tests directly from Perl without
+C<prove>.  For example:
 
     $ CATALYST_DEBUG=0 perl -w -Ilib t/01app.t
 
@@ -167,10 +167,9 @@ For example:
 Although the Catalyst helper scripts provide a basic level of checks
 "for free," testing can become significantly more helpful when you write
 your own script to exercise the various parts of your application.  The
-L<Test::WWW::Mechanize::Catalyst> module 
-is very popular for writing these sorts of test cases.  This module 
-extends L<Test::WWW::Mechanize> (and therefore 
-L<WWW::Mechanize>) to allow you to automate the action of
+L<Test::WWW::Mechanize::Catalyst> module is very popular for writing
+these sorts of test cases.  This module extends L<Test::WWW::Mechanize>
+(and therefore L<WWW::Mechanize>) to allow you to automate the action of
 a user "clicking around" inside your application.  It gives you all the
 benefits of testing on a live system without the messiness of having to
 use an actual web server, and a real person to do the clicking.
@@ -281,14 +280,12 @@ editor and enter the following:
 
 The C<live_app.t> test cases uses copious comments to explain each step
 of the process.  In addition to the techniques shown here, there are a
-variety of other methods available in 
-L<Test::WWW::Mechanize::Catalyst> (for 
-example, regex-based matching). Consult the documentation for more
+variety of other methods available in L<Test::WWW::Mechanize::Catalyst>
+(for example, regex-based matching). Consult the documentation for more
 detail.
 
 B<TIP>: For I<unit tests> vs. the "full application tests" approach used
-by L<Test::WWW::Mechanize::Catalyst>, see 
-L<Catalyst::Test>.
+by L<Test::WWW::Mechanize::Catalyst>, see L<Catalyst::Test>.
 
 B<Note:> The test script does not test the C<form_create> and
 C<form_create_do> actions.  That is left as an exercise for the reader
@@ -303,10 +300,10 @@ or
 
     $ DBIC_TRACE=0 CATALYST_DEBUG=0 prove -vwl t/live_app01.t
 
-Experiment with the C<DBIC_TRACE>, C<CATALYST_DEBUG> and C<-v> 
-settings.  If you find that there are errors, use the techniques 
-discussed in the "Catalyst Debugging" section (Chapter 7) to isolate 
-and fix any problems.
+Experiment with the C<DBIC_TRACE>, C<CATALYST_DEBUG> and C<-v> settings.
+If you find that there are errors, use the techniques discussed in the
+"Catalyst Debugging" section (Chapter 7) to isolate and fix any
+problems.
 
 If you want to run the test case under the Perl interactive debugger,
 try a command such as:
@@ -327,19 +324,19 @@ similar to the following:
 
 Unfortunately, this only shows us the first 50 characters of the HTML
 returned by the request -- not enough to determine where the problem
-lies.  A simple technique that can be used in such situations is to 
-temporarily insert a line similar to the following right after the 
+lies.  A simple technique that can be used in such situations is to
+temporarily insert a line similar to the following right after the
 failed test:
 
     diag $ua1->content;
 
 This will cause the full HTML returned by the request to be displayed.
 
-Another approach to see the full HTML content at the failure point in 
-a series of tests would be to insert a "C<$DB::single=1;> right above 
-the location of the failure and run the test under the perl debugger 
-(with C<-d>) as shown above.  Then you can use the debugger to explore 
-the state of the application right before or after the failure.
+Another approach to see the full HTML content at the failure point in a
+series of tests would be to insert a "C<$DB::single=1;> right above the
+location of the failure and run the test under the perl debugger (with
+C<-d>) as shown above.  Then you can use the debugger to explore the
+state of the application right before or after the failure.
 
 
 =head1 SUPPORTING BOTH PRODUCTION AND TEST DATABASES
@@ -347,16 +344,16 @@ the state of the application right before or after the failure.
 You may wish to leverage the techniques discussed in this tutorial to
 maintain both a "production database" for your live application and a
 "testing database" for your test cases.  One advantage to
-L<Test::WWW::Mechanize::Catalyst> is that
-it runs your full application; however, this can complicate things when
-you want to support multiple databases.
+L<Test::WWW::Mechanize::Catalyst> is that it runs your full application;
+however, this can complicate things when 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<lib/MyApp/Model/DB.pm> in your editor and
-change the C<__PACKAGE__-E<gt>config(...> declaration to resemble:
+One solution is to allow the database specification to be overridden
+with an environment variable.  For example, open
+C<lib/MyApp/Model/DB.pm> in your editor and change the
+C<__PACKAGE__-E<gt>config(...> declaration to resemble:
 
     my $dsn = $ENV{MYAPP_DSN} ||= 'dbi:SQLite:myapp.db';
     __PACKAGE__->config(
@@ -380,21 +377,24 @@ launch your normal application without the C<MYAPP_DSN> environment
 variable defined, it will default to the same C<dbi:SQLite:myapp.db> as
 before.
 
+
 =head2 DATABASE CONFIG SWITCHING USING MULTIPLE CONFIG FILES
 
-By utilizing L<Catalyst::Plugin::ConfigLoader>s functionality for loading
-multiple config files based on environment variables you can override your
-default (production) database connection settings.
+By utilizing L<Catalyst::Plugin::ConfigLoader>s 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.
+Setting C<$ENV{ MYAPP_CONFIG_LOCAL_SUFFIX }> to 'testing' in your test
+script results in loading of an additional config file named
+C<myapp_testing.conf> after C<myapp.conf> which will override any
+parameters in C<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.
+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:
+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: