GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  PLACK::TEST (3)

.ds Aq ’

NAME

Plack::Test - Test PSGI applications with various backends

CONTENTS

SYNOPSIS



  use Plack::Test;
  use HTTP::Request::Common;

  # Simple OO interface
  my $app = sub { return [ 200, [], [ "Hello "] ] };
  my $test = Plack::Test->create($app);

  my $res = $test->request(GET "/");
  is $res->content, "Hello";

  # traditional - 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/;
      };

  # 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 a web server.

METHODS

create


  $test = Plack::Test->create($app, %options);



creates an instance of Plack::Test implementation class. $app has to be a valid PSGI application code reference.

request


  $res = $test->request($request);



takes an HTTP::Request object, runs it through the PSGI application to test and returns an HTTP::Response object.

FUNCTIONS

Plack::Test also provides a functional interface that takes two callbacks, each of which represents PSGI application and HTTP client code that tests the application.
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
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 PLACK::TEST (3) 2015-06-03

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.