=head1 NAME
-Catalyst::Manual::Tutorial::Testing - Catalyst Tutorial - Part 8: Testing
+Catalyst::Manual::Tutorial::Testing - Catalyst Tutorial - Chapter 8: Testing
=head1 OVERVIEW
-This is B<Part 8 of 10> for the Catalyst tutorial.
+This is B<Chapter 8 of 10> for the Catalyst tutorial.
L<Tutorial Overview|Catalyst::Manual::Tutorial>
=head1 DESCRIPTION
-You may have noticed that the Catalyst Helper scripts automatically
-create basic C<.t> test scripts under the C<t> directory. This part of
-the tutorial briefly looks at how these tests can be used to not only
-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
+to not only 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 checkout the source code for this example from the catalyst
subversion repository as per the instructions in
# in t/controller_Books.t at line 8.
# Looks like you failed 1 test of 3.
-B<Note:> Depending on the versions of various modules you have
-installed, you might get some C<used only once> warnings -- you can
-ignore these. If you are following along in Ubuntu 8.10, you can
-prevent them by adding C<no warnings;> above line 49 in
-C</usr/lib/perl5/Template/Base.pm> to match the following:
-
- ...
- { no strict qw( refs );
- no warnings;
- $argnames = \@{"$class\::BASEARGS"} || [ ];
- }
- ...
-
The redirection used by the Authentication plugins will cause several
failures in the default tests. You can fix this by making the following
changes:
-1) Change the line in C<t/01app.t> that read:
+1) Change the line in C<t/01app.t> that reads:
ok( request('/')->is_success, 'Request should succeed' );
ok( request('/login')->is_success, 'Request should succeed' );
-2) Change the C<request('/logout')-E<gt>is_success> to
-C<request('/logout')-E<gt>is_redirect> in C<t/controller_Logout.t>.
+2) Change the "C<request('/logout')-E<gt>is_success>" to
+"C<request('/logout')-E<gt>is_redirect>" in C<t/controller_Logout.t>.
-3) Change the C<request('/books')-E<gt>is_success> to
-C<request('/books')-E<gt>is_redirect> in C<t/controller_Books.t>.
+3) Change the "C<request('/books')-E<gt>is_success>" to
+"C<request('/books')-E<gt>is_redirect>" in C<t/controller_Books.t>.
-4) Add C<use MyApp;> to the top of C<t/view_TT.t>.
+4) Add "C<use MyApp;>" to the top of C<t/view_TT.t>.
As you can see in the C<prove> command line above, the C<--lib> option
is used to set the location of the Catalyst C<lib> directory. With this
$_->content_contains("Book List", "Check for book list title") for $ua1, $ua2;
# Make sure the appropriate logout buttons are displayed
- $_->content_contains("/logout\">Logout</a>",
+ $_->content_contains("/logout\">User Logout</a>",
"Both users should have a 'User Logout'") for $ua1, $ua2;
$ua1->content_contains("/books/form_create\">Create</a>",
"Only 'test01' should have a create link");
$ DBIC_TRACE=0 CATALYST_DEBUG=0 prove --lib lib -v 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 (Part 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:
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.
+
=head1 SUPPORTING BOTH PRODUCTION AND TEST DATABASES