++ed by:

1 PAUSE user
1 non-PAUSE user.

Erik Tank


Test::Mock::Simple - A simple way to mock out parts of or a whole module.


  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(); 
  print $obj->sum . "\n"; # prints 3 


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


If set to true (preferably 1) then a 'add' is disabled.



Create a new mock simple object.


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.


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.


Erik Tank, <tank@jundy.com<gt>


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.