use strict; use warnings; use Test::More tests => 2; use Test::MockModule; my $mock_simple = Test::MockModule->new( 'Simple', no_auto => 1 ); $mock_simple->mock( foo => 1 ); $mock_simple->mock( bar => 'bar' ); $mock_simple->mock( baz => 'baz' ); my $simple = bless {}, 'Simple'; is( $simple->foobar, 'bar', 'got bar when foo is true' ); $mock_simple->mock( foo => 0 ); is( $simple->foobar, 'baz', 'got baz when foo is false' ); #################################################################### package Simple; sub foobar{ my $self = shift; if ( $self->foo() ){ return $self->bar(); } else{ return $self->baz(); } }