NAME

Test::EasyMock - A mock library which is usable easily.

SYNOPSIS

use Test::EasyMock qw(
    create_mock
    expect
    replay
    verify
    reset
);


my $mock = create_mock();
expect($mock->foo(1))->and_scalar_return('a');
expect($mock->foo(2))->and_scalar_return('b');
replay($mock);
$mock->foo(1); # return 'a'
$mock->foo(2); # return 'b'
$mock->foo(3); # Unexpected method call.(A test is failed)
verify($mock); # verify all expectations is invoked.


reset($mock);
expect($mock->foo(1, 2)->and_array_return('a', 'b');
expect($mock->foo({ value => 3 })->and_array_return('c');
replay($mock);
$mock->foo(1, 2); # return ('a', 'b')
$mock->foo({ value => 3 }); # return ('c')
verify($mock);


reset($mock);
expect($mock->foo(1))->and_scalar_return('a');
expect($mock->foo(1))->and_scalar_return('b');
replay($mock);
$mock->foo(1); # return 'a'
$mock->foo(1); # return 'b'
$mock->foo(1); # Unexpected method call.(A test is failed)
verify($mock);

DESCRIPTION

This is mock library modeled on 'EasyMock' in Java.

FUNCTIONS

create_mock([$module_name|$object])

Creates a mock object. If specified the $module_name then a isa($module_name) method of the mock object returns true.

expect($expectation)

Record a method invocation and behavior.

The following example is expecting the foo method invocation with $arguments and a result of the invocation is 123.

expect($mock->foo($arguments))
    ->and_scalar_return(123);

And the next example is expecting the foo method invocation without an argument and a result of the invocation is (1, 2, 3).

expect($mock->foo())
    ->and_array_return(1, 2, 3);

A list of and_* methods.

replay($mock [, $mock2 ...])

Replay the mock object behaviors which is recorded by the expect function.

replay($mock);

verify($mock)

Verify the mock method invocations.

reset($mock)

Reset the mock.

AUTHOR

keita iseki <keita.iseki+cpan at gmail.com>

LICENCE AND COPYRIGHT

Copyright (c) 2012, keita iseki <keita.iseki+cpan at gmail.com>. All rights reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.

SEE ALSO