Chapter 7. Testing
7.4. Mock objects
Inject new methods
Inject a new method into Some::Class:
use Test::V0 qw/mock/;
my $mock = mock 'Some::Class' => (
add => [
is_active => sub { ... }
]
);
Some::Class->is_active(); # Calls our newly injected method.
Inject a new method into an anonymous class:
use Test::V0 qw/mock/;
my $simple_mock = mock {} => (
add => [
is_active => sub { ... }
]
);
$simple_mock->is_active(); # Calls our newly injected method.
Override existing methods
Override an existing method in Some::Class:
my $mock = mock 'Some::Class' => (
override => [
replace_method => sub { ... },
],
);
Some::Class->replace_method(); # Calls our replacement method.
$mock->override(...) # Override some more
Restore original methods
$mock = undef; # Undoes all the mocking, restoring all original methods.
For more info
For more details see Test2::Tools::Mock.