Test::Mock::Guard - Simple mock test library using RAII. |
Test::Mock::Guard - Simple mock test library using RAII.
use Test::More; use Test::Mock::Guard qw(mock_guard);
package Some::Class;
sub new { bless {} => shift } sub foo { "foo" } sub bar { 1; }
package main;
{ my $guard = mock_guard( 'Some::Class', { foo => sub { "bar" }, bar => 10 } ); my $obj = Some::Class->new; is( $obj->foo, "bar" ); is( $obj->bar, 10 ); }
my $obj = Some::Class->new; is( $obj->foo, "foo" ); is( $obj->bar, 1 );
done_testing;
Test::Mock::Guard is mock test library using RAII. This module is able to change method behavior by each scope. See SYNOPSIS's sample code.
@class_defs have the following format.
You can mock instance methods as well as class methods (this feature was provided by cho45):
use Test::More; use Test::Mock::Guard qw(mock_guard);
package Some::Class;
sub new { bless {} => shift } sub foo { "foo" }
package main;
my $obj1 = Some::Class->new; my $obj2 = Some::Class->new;
{ my $obj2 = Some::Class->new; my $guard = mock_guard( $obj2, { foo => sub { "bar" } } ); is ($obj1->foo, "foo", "obj1 has not changed" ); is( $obj2->foo, "bar", "obj2 is mocked" ); }
is( $obj1->foo, "foo", "obj1" ); is( $obj2->foo, "foo", "obj2" );
done_testing;
See mock_guard definition.
Returns a number of calling of $method_name in $class_name_or_object.
Toru Yamaguchi <zigorou@cpan.org>
Yuji Shimada <xaicron at cpan.org>
Masaki Nakagawa <masaki@cpan.org>
cho45 <cho45@lowreal.net>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Test::Mock::Guard - Simple mock test library using RAII. |