The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

=head1 NAME
Test::Spy::Method - mocked method metadata
=head1 SYNOPSIS
my $method = $spy->add_method('method_name');
$method->should_call(sub {
print 'called!';
});
ok !$method->was_called;
=head1 DESCRIPTION
This class objects let you set return values and examine call data of a specific method.
=head2 Method call result methods
The final method will return on throw whatever was last specified. Calling
C<should_return> will remove the exception throwing, if it was set up with
C<should_throw>, and vice versa.
=head3 should_return
$method->should_return(@returns);
Sets up the return value of the method as specified in C<@returns>.
If it consists of just one element, method will return it as scalar. Otherwise,
it will return the entire C<@returns> array as a list.
Returns C<$self>, for chaining.
=head3 should_call
$method->should_call(sub { ... });
Sets up the method to call the subroutine reference argument.
This subroutine will get all the regular method parameters, including C<$self>.
The subroutine should return whatever the actual method should return.
Returns C<$self>, for chaining.
=head3 should_throw
$method->should_throw('text exception');
$method->should_throw($exception_object);
Instead of returning a specific value or calling a subroutine, the method can
be set to always throw a given exception (a scalar value).
Returns C<$self>, for chaining.
=head2 Call history methods
These methods are the same as documented in L<Test::Spy/Call history methods>,
but when called on this class objects, you don't need to setup
L<Test::Spy/context>.
=head1 SEE ALSO
L<Test::Spy>