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 )