Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

plack::test(3pm) [debian man page]

Plack::Test(3pm)					User Contributed Perl Documentation					  Plack::Test(3pm)

NAME
Plack::Test - Test PSGI applications with various backends SYNOPSIS
use Plack::Test; # named params test_psgi app => sub { my $env = shift; return [ 200, [ 'Content-Type' => 'text/plain' ], [ "Hello World" ] ], }, client => sub { my $cb = shift; my $req = HTTP::Request->new(GET => "http://localhost/hello"); my $res = $cb->($req); like $res->content, qr/Hello World/; }; use HTTP::Request::Common; # positional params (app, client) my $app = sub { return [ 200, [], [ "Hello "] ] }; test_psgi $app, sub { my $cb = shift; my $res = $cb->(GET "/"); is $res->content, "Hello"; }; DESCRIPTION
Plack::Test is a unified interface to test PSGI applications using HTTP::Request and HTTP::Response objects. It also allows you to run PSGI applications in various ways. The default backend is "Plack::Test::MockHTTP", but you may also use any Plack::Handler implementation to run live HTTP requests against at web server FUNCTIONS
test_psgi test_psgi $app, $client; test_psgi app => $app, client => $client; Runs the client test code $client against a PSGI application $app. The client callback gets one argument $cb, a callback that accepts an "HTTP::Request" object and returns an "HTTP::Response" object. Use HTTP::Request::Common to import shortcuts for creating requests for "GET", "POST", "DELETE", and "PUT" operations. For your convenience, the "HTTP::Request" given to the callback automatically uses the HTTP protocol and the localhost (127.0.0.1 by default), so the following code just works: use HTTP::Request::Common; test_psgi $app, sub { my $cb = shift; my $res = $cb->(GET "/hello"); }; Note that however, it is not a good idea to pass an arbitrary (i.e. user-input) string to "GET" or even "HTTP::Request->new" by assuming that it always represents a path, because: my $req = GET "//foo/bar"; would represent a request for a URL that has no scheme, has a hostname foo and a path /bar, instead of a path //foo/bar which you might actually want. OPTIONS
Specify the Plack::Test backend using the environment variable "PLACK_TEST_IMPL" or $Plack::Test::Impl package variable. The available values for the backend are: MockHTTP (Default) Creates a PSGI env hash out of HTTP::Request object, runs the PSGI application in-process and returns HTTP::Response. Server Runs one of Plack::Handler backends ("Standalone" by default) and sends live HTTP requests to test. ExternalServer Runs tests against an external server specified in the "PLACK_TEST_EXTERNALSERVER_URI" environment variable instead of spawning the application in a server locally. For instance, test your application with the "HTTP::Server::ServerSimple" server backend with: > env PLACK_TEST_IMPL=Server PLACK_SERVER=HTTP::Server::ServerSimple prove -l t/test.t AUTHOR
Tatsuhiko Miyagawa perl v5.14.2 2011-09-20 Plack::Test(3pm)

Check Out this Related Man Page

Plack::Runner(3pm)					User Contributed Perl Documentation					Plack::Runner(3pm)

NAME
Plack::Runner - plackup core SYNOPSIS
# Your bootstrap script use Plack::Runner; my $app = sub { ... }; my $runner = Plack::Runner->new; $runner->parse_options(@ARGV); $runner->run($app); DESCRIPTION
Plack::Runner is the core of plackup runner script. You can create your own frontend to run your application or framework, munge command line options and pass that to "run" method of this class. "run" method does exactly the same thing as the plackup script does, but one notable addition is that you can pass a PSGI application code reference directly to the method, rather than via ".psgi" file path or with "-e" switch. This would be useful if you want to make an installable PSGI application. Also, when "-h" or "--help" switch is passed, the usage text is automatically extracted from your own script using Pod::Usage. NOTES
Do not directly call this module from your ".psgi", since that makes your PSGI application unnecessarily depend on plackup and won't run other backends like Plack::Handler::Apache2 or mod_psgi. If you really want to make your ".psgi" runnable as a standalone script, you can do this: my $app = sub { ... }; unless (caller) { require Plack::Runner; my $runner = Plack::Runner->new; $runner->parse_options(@ARGV); return $runner->run($app); } return $app; WARNING: this section used to recommend "if (__FILE__ eq $0)" but it's known to be broken since Plack 0.9971, since $0 is now always set to the .psgi file path even when you run it from plackup. SEE ALSO
plackup perl v5.14.2 2012-03-21 Plack::Runner(3pm)
Man Page