Test::Fake::HTTPD(3pm) | User Contributed Perl Documentation | Test::Fake::HTTPD(3pm) |
Test::Fake::HTTPD - a fake HTTP server
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 "Listening on address:port %s\n", $httpd->host_port; # or printf "Listening on address %s port %s\n", $httpd->host, $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, daemon_args => { ... }, # HTTP::Daemon args ); $httpd->run(sub { my $req = shift; # ... [ 200, [ 'Content-Type', 'text/plain' ], [ 'Hello World' ] ]; }); # Stop http server automatically at destruction time.
Test::Fake::HTTPD is a fake HTTP server module for testing.
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);
Starts HTTPS server and returns the guard instance.
If you use this method, you MUST install HTTP::Daemon::SSL.
extra_daemon_args SSL_key_file => "certs/server-key.pem", SSL_cert_file => "certs/server-cert.pem"; 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);
Returns a new instance.
my $httpd = Test::Fake::HTTPD->new(%args);
%args are:
timeout value (default: 5)
queue size for listen (default: 5)
local address to listen on (default: 127.0.0.1)
TCP port to listen on (default: auto detection)
my $httpd = Test::Fake::HTTPD->new( timeout => 10, listen => 10, port => 3333, );
Starts this HTTP server.
$httpd->run(sub { ... });
Returns a scheme of running, "http" or "https".
my $scheme = $httpd->scheme;
Returns the address the server is listening on.
Returns the TCP port the server is listening on.
my $port = $httpd->port;
Returns the host:port from "endpoint" (e.g., "127.0.0.1:1234", "[::1]:1234").
my $host_port = $httpd->host_port;
Returns a URI object to the running server (e.g., "http://127.0.0.1:1234", "https://[::1]:1234"). If "host" returns "undef", '', '0.0.0.0', or '::', the host portion of the URI is set to "localhost".
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);
NAKAGAWA Masaki <masaki@cpan.org>
xaicron
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Test::TCP, HTTP::Daemon, HTTP::Daemon::SSL, HTTP::Message::PSGI
2020-08-18 | perl v5.30.3 |