X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial%2FTesting.pod;h=35a46953af63bd65e7004fb0ffa7baeb3788b493;hb=feb4555a077523ed0583fa59e9f4ff843d5ae026;hp=5842f7f3b976b312320d8db4ead8740f816a325d;hpb=3533daff0314522f79dff9c618da087568f1378c;p=catagits%2FCatalyst-Manual.git diff --git a/lib/Catalyst/Manual/Tutorial/Testing.pod b/lib/Catalyst/Manual/Tutorial/Testing.pod index 5842f7f..35a4695 100644 --- a/lib/Catalyst/Manual/Tutorial/Testing.pod +++ b/lib/Catalyst/Manual/Tutorial/Testing.pod @@ -65,7 +65,8 @@ 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 -L +L. + =head1 RUNNING THE "CANNED" CATALYST TESTS @@ -76,10 +77,10 @@ directory, enter: $ prove --lib lib t -There will be a lot of output because we have the C<-Debug> flag enabled -in C (see the C 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 (see the C tip below for +a quick and easy way to reduce the clutter). Look for lines like this +for errors: # Failed test 'Request should succeed' # in t/controller_Books.t at line 8. @@ -97,11 +98,13 @@ to: ok( request('/login')->is_success, 'Request should succeed' ); -2) Change the Cis_success> to -Cis_redirect> in C. +2) Change the "Cis_success>" to +"Cis_redirect>" in C. + +3) Change the "Cis_success>" to +"Cis_redirect>" in C. -3) Change the Cis_success> to -Cis_redirect> in C. +4) Add "C" to the top of C. As you can see in the C command line above, the C<--lib> option is used to set the location of the Catalyst C directory. With this @@ -113,6 +116,19 @@ environment variable. For example: $ CATALYST_DEBUG=0 prove --lib lib t +B Depending on the versions of various modules you have +installed, you might get some C warnings -- you can +ignore these. If you are following along in Ubuntu 8.10, you can +prevent them by adding C above line 49 in +C to match the following: + + ... + { no strict qw( refs ); + no warnings; + $argnames = \@{"$class\::BASEARGS"} || [ ]; + } + ... + During the C and C tests, you might notice the C warning message. To execute the Pod-related tests, add C to the C @@ -209,7 +225,7 @@ editor and enter the following: "Check we ARE logged in" ) for $ua1, $ua2; # 'Click' the 'Logout' link (see also 'text_regex' and 'url_regex' options) - $_->follow_link_ok({n => 1}, "Logout via first link on page") for $ua1, $ua2; + $_->follow_link_ok({n => 4}, "Logout via first link on page") for $ua1, $ua2; $_->title_is("Login", "Check for login title") for $ua1, $ua2; $_->content_contains("You need to log in to use this application", "Check we are NOT logged in") for $ua1, $ua2; @@ -226,7 +242,7 @@ editor and enter the following: $_->content_contains("Book List", "Check for book list title") for $ua1, $ua2; # Make sure the appropriate logout buttons are displayed - $_->content_contains("/logout\">Logout", + $_->content_contains("/logout\">User Logout", "Both users should have a 'User Logout'") for $ua1, $ua2; $ua1->content_contains("/books/form_create\">Create", "Only 'test01' should have a create link"); @@ -288,7 +304,7 @@ or Experiment with the C, C and C<-v> settings. If you find that there are errors, use the -techniques discussed in the "Catalyst Debugging" section (Part 6) to +techniques discussed in the "Catalyst Debugging" section (Part 7) to isolate and fix any problems. If you want to run the test case under the Perl interactive debugger, @@ -314,10 +330,16 @@ 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: - warn $ua1->content; + 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. + =head1 SUPPORTING BOTH PRODUCTION AND TEST DATABASES @@ -328,12 +350,12 @@ 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 database specification to be overridden with an environment variable. -For example, open C in your editor and +For example, open C in your editor and change the C<__PACKAGE__-Econfig(...> declaration to resemble: my $dsn = $ENV{MYAPP_DSN} ||= 'dbi:SQLite:myapp.db'; __PACKAGE__->config( - schema_class => 'MyApp::Schema::MyAppDB', + schema_class => 'MyApp::Schema', connect_info => [ $dsn, ], @@ -356,8 +378,8 @@ Kennedy Clark, C Please report any errors, issues or suggestions to the author. The most recent version of the Catalyst Tutorial can be found at -L. +L. -Copyright 2006, Kennedy Clark, under Creative Commons License -(L). +Copyright 2006-2008, Kennedy Clark, under Creative Commons License +(L).