NAME
Test::Mock::Simple - A simple way to mock out parts of or a whole module.
SYNOPSIS
use Test::Mock::Simple;
my $total = 0;
# Original::Module has methods increase, decrease, and sum
my $mock = Test::Mock::Simple->new(module => 'Original::Module');
$mock->add(increase => sub { shift; return $total += shift; });
$mock->add(decrease => sub { shift; return $total -= shift; });
my $obj = Original::Module->new();
$obj->increase(5);
$obj->decrease(2);
print $obj->sum . "\n"; # prints 3
DESCRIPTION
This is a simple way of overriding any number of methods for a give object/class.
Can be used directly in test (or any) files, but best practice (IMHO) is to create a 'Mock' module and using it instead of directly using the module in your tests. The goal is to write a test which passes whether you're Mocking or not. See TEST_MOCK_SIMPLE_DISABLE below.
Why another Mock module? I needed something simple with no bells or whistles that only overrode certain methods of a given module. It's more work, but there aren't any conflicts.
Environmental Variables
- TEST_MOCK_SIMPLE_DISABLE
-
If set to true (preferably 1) then a 'add' is disabled.
Methods
- new
-
Create a new mock simple object.
- module
-
The name of the module that is being mocked. The module will be loaded first so that when you get around to mocking things they will override the module.
- add
-
This allows you to specify a new method (subroutine) that will override the existing one. Think of it as 'add'ing a mocked method to override the existing one.
AUTHOR
Erik Tank, <tank@jundy.com<gt>
COPYRIGHT AND LICENSE
Copyright (C) 2013 by Erik Tank
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.14.2 or, at your option, any later version of Perl 5 you may have available.