-
-
16 Jan 2014 08:58:57 UTC
- Distribution: Test-Mock-Guard
- Module version: 0.10
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues (3)
- Testers (9138 / 1 / 0)
- Kwalitee
Bus factor: 1- 96.43% Coverage
- License: perl_5
- Perl: v5.8.1
- Activity
24 month- Tools
- Download (14.13KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
NAME
Test::Mock::Guard - Simple mock test library using RAII.
SYNOPSIS
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;
DESCRIPTION
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.
EXPORT FUNCTION
mock_guard( @class_defs )
@class_defs have the following format.
- key
-
Class name or object to mock.
- value
-
Hash reference. Keys are method names; values are code references or scalars. If the value is code reference, it is used as a method. If the value is a scalar, the method will return the specified value.
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;
METHODS
new( @class_defs )
See "mock_guard" definition.
call_count( $class_name_or_object, $method_name )
Returns a number of calling of $method_name in $class_name_or_object.
AUTHOR
Toru Yamaguchi <zigorou@cpan.org>
Yuji Shimada <xaicron at cpan.org>
Masaki Nakagawa <masaki@cpan.org>
THANKS TO
cho45 <cho45@lowreal.net>
SEE ALSO
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Module Install Instructions
To install Test::Mock::Guard, copy and paste the appropriate command in to your terminal.
cpanm Test::Mock::Guard
perl -MCPAN -e shell install Test::Mock::Guard
For more information on module installation, please visit the detailed CPAN module installation guide.