From: hkclark Date: Thu, 1 Sep 2011 15:29:06 +0000 (-0400) Subject: Misc updates for VM release X-Git-Tag: 5.9003~25^2~25 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Manual.git;a=commitdiff_plain;h=0e6626181deb8ea00d7bdd673717ede28f19bdd2 Misc updates for VM release --- diff --git a/lib/Catalyst/Manual/Tutorial/08_Testing.pod b/lib/Catalyst/Manual/Tutorial/08_Testing.pod index 91ff929..6acafb8 100644 --- a/lib/Catalyst/Manual/Tutorial/08_Testing.pod +++ b/lib/Catalyst/Manual/Tutorial/08_Testing.pod @@ -122,13 +122,13 @@ to: use MyApp; -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 -command, you will get all of the usual development server debug output, -something most people prefer to disable while running tests cases. -Although you can edit the C to comment out the C<-Debug> -plugin, it's generally easier to simply set the C -environment variable. For example: +As you can see in the C command line above, the C<-l> option (or +C<--lib> if you prefer) is used to set the location of the Catalyst +C directory. With this command, you will get all of the usual +development server debug output, something most people prefer to disable +while running tests cases. Although you can edit the C to +comment out the C<-Debug> plugin, it's generally easier to simply set +the C environment variable. For example: $ CATALYST_DEBUG=0 prove -wl t @@ -146,7 +146,7 @@ pass. :-) Another useful option is the C (C<-v>) option to C. It prints the name of each test case as it is being run: - $ CATALYST_DEBUG=0 TEST_POD=1 prove -vwl t + $ CATALYST_DEBUG=0 prove -vwl t =head1 RUNNING A SINGLE TEST @@ -166,7 +166,7 @@ C. 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 +your own tests to exercise the various parts of your application. The L module is very popular for writing these sorts of test cases. This module extends L (and therefore L) to allow you to automate the action of @@ -177,7 +177,7 @@ use an actual web server, and a real person to do the clicking. To create a sample test case, open the C file in your editor and enter the following: - #!/usr/bin/perl + #!/usr/bin/env perl use strict; use warnings; @@ -227,8 +227,10 @@ editor and enter the following: "Check we are NOT logged in") for $ua1, $ua2; # Log back in - $ua1->get_ok("http://localhost/login?username=test01&password=mypass", "Login 'test01'"); - $ua2->get_ok("http://localhost/login?username=test02&password=mypass", "Login 'test02'"); + $ua1->get_ok("http://localhost/login?username=test01&password=mypass", + "Login 'test01'"); + $ua2->get_ok("http://localhost/login?username=test02&password=mypass", + "Login 'test02'"); # Should be at the Book List page... do some checks to confirm $_->title_is("Book List", "Check for book list title") for $ua1, $ua2; @@ -255,7 +257,8 @@ editor and enter the following: $ua1->content_contains("by 'Stevens'", "Check author added OK"); $ua1->content_contains("with a rating of 2.", "Check rating added"); # Try a regular expression to combine the previous 3 checks & account for whitespace - $ua1->content_like(qr/Added book 'TestTitle'\s+by 'Stevens'\s+with a rating of 2./, "Regex check"); + $ua1->content_like(qr/Added book 'TestTitle'\s+by 'Stevens'\s+with a rating of 2./, + "Regex check"); # Make sure the new book shows in the list $ua1->get_ok("http://localhost/books/list", "'test01' book list"); @@ -270,7 +273,7 @@ editor and enter the following: $ua1->get_ok($delLinks[$#delLinks]->url, 'Delete last book'); # Check that delete worked $ua1->content_contains("Book List", "Book List page test"); - $ua1->content_contains("Book deleted", "Book was deleted"); + $ua1->content_like(qr/Deleted book \d+/, "Deleted book #"); # User 'test02' should not be able to add a book $ua2->get_ok("http://localhost/books/url_create/TestTitle2/2/5", "'test02' add"); @@ -281,8 +284,9 @@ editor and enter the following: The C 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 -(for example, regex-based matching). Consult the documentation for more -detail. +(for example, regex-based matching). Consult +L, L, +L, and L for more detail. B: For I vs. the "full application tests" approach used by L, see L. @@ -334,7 +338,7 @@ 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 +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. @@ -380,9 +384,10 @@ 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. +L has functionality to load loading +multiple config files based on environment variablesi, allowing you to +override your default (production) database connection settings during +development (or vice versa). Setting C<$ENV{ MYAPP_CONFIG_LOCAL_SUFFIX }> to 'testing' in your test script results in loading of an additional config file named