Test::Fake::HTTPD(3) 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 <[email protected]>

THANKS TO

xaicron

LICENSE

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