Test-MockModule
view release on metacpan or search on metacpan
lib/Test/MockModule.pm view on Meta::CPAN
} keys %{"${package}::"};
}
my $make_handler = exists $opts{handler}
? sub { $opts{handler} }
: $opts{noop}
? sub { sub { 1 } }
: sub { my $n = shift; sub { croak "$n was not mocked" } };
# Skip special Perl subs that should never be blindly mocked:
# - Phase blocks (BEGIN, END, INIT, CHECK, UNITCHECK) run at compile/exit time
# - DESTROY is called during object cleanup
# - AUTOLOAD handles missing method dispatch
# - import handles use/import semantics
# - Overload subs start with '(' (e.g. '(""', '(+', '(==')
my %_skip = map { $_ => 1 } qw(
import DESTROY BEGIN END INIT CHECK UNITCHECK AUTOLOAD
);
my @to_mock;
for my $name (@subs) {
next if $_skip{$name};
next if $name =~ /^\(/; # overload subs
next if $self->{_mocked}{$name};
push @to_mock, $name, $make_handler->("${package}::${name}");
}
( run in 1.305 second using v1.01-cache-2.11-cpan-9581c071862 )