Scroll to navigation

README(3pm) User Contributed Perl Documentation README(3pm)
 

NAME

Test::Fake::HTTPD - a fake HTTP server

SYNOPSIS

DSL-style
    use Test::Fake::HTTPD;
    my $httpd = run_http_server {
        my $req = shift;
        # ...
        # 1. HTTP::Response ok
        return $http_response;
        # 2. Plack::Response ok
        return $plack_response;
        # 3. PSGI response ok
        return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello World' ] ];
    };
    printf "You can connect to your server at %s.\n", $httpd->host_port;
    # or
    printf "You can connect to your server at 127.0.0.1:%d.\n", $httpd->port;
    # access to fake HTTP server
    use LWP::UserAgent;
    my $res = LWP::UserAgent->new->get($httpd->endpoint); # "http://127.0.0.1:{port}"
    # Stop http server automatically at destruction time.
OO-style
    use Test::Fake::HTTPD;
    my $httpd = Test::Fake::HTTPD->new(
        timeout => 5,
    );
    $httpd->run(sub {
        my $req = shift;
        # ...
        [ 200, [ 'Content-Type', 'text/plain' ], [ 'Hello World' ] ];
    });
    # Stop http server automatically at destruction time.

DESCRIPTION

Test::Fake::HTTPD is a fake HTTP server module for testing.

FUNCTIONS

"run_http_server { ... }"
Starts HTTP server and returns the guard instance.
  my $httpd = run_http_server {
      my $req = shift;
      # ...
      return $http_or_plack_or_psgi_res;
  };
  # can use $httpd guard object, same as OO-style
  LWP::UserAgent->new->get($httpd->endpoint);
    
"run_https_server { ... }"
Starts HTTPS server and returns the guard instance.
If you use this method, you MUST install HTTP::Daemon::SSL.
  my $httpd = run_https_server {
      my $req = shift;
      # ...
      return $http_or_plack_or_psgi_res;
  };
  # can use $httpd guard object, same as OO-style
  my $ua = LWP::UserAgent->new(
      ssl_opts => {
          SSL_verify_mode => 0,
          verify_hostname => 0,
      },
  );
  $ua->get($httpd->endpoint);
    

METHODS

"new( %args )"
Returns a new instance.
  my $httpd = Test::Fake::HTTPD->new(%args);
    
%args are:
"timeout"
timeout value (default: 5)
"listen"
queue size for listen (default: 5)
"port"
local bind port number (default: auto detection)
  my $httpd = Test::Fake::HTTPD->new(
      timeout => 10,
      listen  => 10,
      port    => 3333,
  );
"run( sub { ... } )"
Starts this HTTP server.
  $httpd->run(sub { ... });
    
"scheme"
Returns a scheme of running, "http" or "https".
  my $scheme = $httpd->scheme;
    
"port"
Returns a port number of running.
  my $port = $httpd->port;
    
"host_port"
Returns a URI host_port of running. ("127.0.0.1:{port}")
  my $host_port = $httpd->host_port;
    
"endpoint"
Returns an endpoint URI of running. ("http://127.0.0.1:{port}" URI object)
  use LWP::UserAgent;
  my $res = LWP::UserAgent->new->get($httpd->endpoint);
  my $url = $httpd->endpoint;
  $url->path('/foo/bar');
  my $res = LWP::UserAgent->new->get($url);
    

AUTHOR

NAKAGAWA Masaki <masaki@cpan.org>

THANKS TO

xaicron

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Test::TCP, HTTP::Daemon, HTTP::Daemon::SSL, HTTP::Message::PSGI
2014-05-24 perl v5.18.2