The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl;

use strict;
use warnings;

use LWP::ConsoleLogger::Easy qw( debug_ua );
use Test::More;
use Test::WWW::Mechanize::PSGI;

my $ua = Test::WWW::Mechanize::PSGI->new(
    app => sub {
        my $env = shift;
        return [
            200,
            [ 'Content-Type' => 'text/html' ],
            [
                '<html><head><title>Hi</title></head><body>Hello World</body></html>'
            ]
        ];
    },
);
my $logger = debug_ua($ua);

# Test::WWW::Mechanize::PSGI overrides LWP::UserAgent::simple_request(), which
# is what would normally call LWP::UserAgent::send_request().  So, the default
# handlers used by LWP::ConsoleLogger::Easy (request_send) will never fire.  In
# this case we'll just manually add an additional callback to the object which
# will fire in the request_prepare phase, which is
# LWP::UserAgent::prepare_request().  That's earlier on in the request phase,
# but still helpful.

$ua->add_handler(
    'request_prepare',
    sub { $logger->request_callback(@_) }
);

$ua->get_ok('/');

done_testing();