Test::Mock::LWP - Easy mocking of LWP packages


Test-Mock-LWP documentation Contained in the Test-Mock-LWP distribution.

Index


Code Index:

NAME

Top

Test::Mock::LWP - Easy mocking of LWP packages

SYNOPSIS

Top

Make LWP packages to make testing easier.

    use Test::Mock::LWP;

    # Setup fake response content and code
    $Mock_response->mock( content => sub { 'foo' } );
    $Mock_resp->mock( code => sub { 201 } );

    # Validate args passed to request constructor
    is_deeply $Mock_request->new_args, \@expected_args;

    # Validate request headers
    is_deeply [ $Mock_req->next_call ],
              [ 'header', [ 'Accept', 'text/plain' ] ];

    # Special User Agent Behaviour
    $Mock_ua->mock( request => sub { die 'foo' } );

DESCRIPTION

Top

This package arises from duplicating the same code to mock LWP et al in several different modules I've written. This version is very minimalist, but works for my needs so far. I'm very open to new suggestions and improvements.

EXPORTS

Top

The following variables are exported by default:

$Mock_ua

The mock LWP::UserAgent object - a Test::MockObject object

$Mock_req, $Mock_request

The mock HTTP::Request object - a Test::MockObject object

$Mock_resp, $Mock_response

The mock HTTP::Response object - a Test::MockObject object

AUTHOR

Top

Luke Closs, <test-mock-lwp at 5thplane.com>

BUGS

Top

Please report any bugs or feature requests through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-Mock-LWP. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

Top

You can find documentation for this module with the perldoc command.

    perldoc Test::Mock::LWP

You can also look for information at:

* AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/Test-Mock-LWP

* CPAN Ratings

http://cpanratings.perl.org/d/Test-Mock-LWP

* RT: CPAN's request tracker

http://rt.cpan.org/NoAuth/Bugs.html?Dist=Test-Mock-LWP

* Search CPAN

http://search.cpan.org/dist/Test-Mock-LWP

ACKNOWLEDGEMENTS

Top

COPYRIGHT & LICENSE

Top


Test-Mock-LWP documentation Contained in the Test-Mock-LWP distribution.
package Test::Mock::LWP;
use strict;
use warnings;
use base 'Exporter';
use Test::MockObject;
our @EXPORT = qw($Mock_ua $Mock_req $Mock_request $Mock_resp $Mock_response);

our $VERSION = '0.05';

BEGIN {
    # Don't load the mock classes if the real ones are already loaded
    my $mo = Test::MockObject->new;
    my @mock_classes = (
        [ 'HTTP::Response' => '$Mock_response $Mock_resp' ],
        [ 'HTTP::Request'  => '$Mock_request $Mock_req' ],
        [ 'LWP::UserAgent' => '$Mock_ua' ],
    );
    for my $c (@mock_classes) {
        my ($real, $imports) = @$c;
        if (!$mo->check_class_loaded($real)) {
            my $mock_class = "Test::Mock::$real";
            eval "require $mock_class"; 
            if ($@) {
                warn "error during require $mock_class: $@" if $@;
                next;
            }
            my $import = "$mock_class qw($imports)";
            eval "import $import";
            warn "error during import $import: $@" if $@;
        }
    }
}

1;