NAME
Test::Double - Perl extension for Test Double.
SYNOPSIS
package Foo;
sub new { bless {}, shift }
sub bar { 'bar' }
# in your tests
use Test::More;
use Test::Double;
my $foo = Foo->new;
is $foo->bar, 'bar', 'bar() returns "bar"';
# stub out
stub($foo)->bar('BAR');
is $foo->bar, 'BAR', 'stubbed bar() returns "BAR"';
# mock out
mock($foo)->expects('bar')->at_most(2)->returns('BAR');
is $foo->bar, 'BAR', 'mocked bar() returns "BAR"';
my $result = Test::Double->verify_result;
ok $result->{bar}->{at_most};
Test::Double->verify;
Test::Double->reset;
done_testing;
DESCRIPTION
Test::Double is a Perl extension for Test Double.
METHODS
- stub($object)
-
Returns stub object. This object accepts any methods for stubbing using AUTOLOAD mechanism.
stub($object)->some_method($expected_value); # after, $object->some_method() returns $expected_value
- mock($object)
-
Returns mock object. This object can be defined expectation by calling expects() method.
mock($object)->expects('some_method'); # after, $object->some_method() returns $expected_value
- verify
-
Verify how many times method calling, and method calling with what args.
- verify_result
-
Returns verified result.
my $result = Test::Double->verify_result; $result->{some_method}->{at_least}; # result->{what method}->{what expectation}
- reset
-
Reset mocking objects.
AUTHOR
NAKAGAWA Masaki <masaki@cpan.org>
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.