Skip to content
The fake HTTP server module for testing
Perl Perl6
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
certs
lib/Test/Fake
t
xt
.gitignore
.proverc
.shipit
Changes
MANIFEST.SKIP
Makefile.PL
README.pod

README.pod

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

Something went wrong with that request. Please try again.