[![Build Status](https://travis-ci.org/tokuhirom/Module-Spy.svg?branch=master)](https://travis-ci.org/tokuhirom/Module-Spy)
# NAME

Module::Spy - Spy for Perl5

# SYNOPSIS

Spy for class method.

   use Module::Spy;

   my $spy = spy_on('LWP::UserAgent', 'request');
   $spy->and_returns(HTTP::Response->new(200));

   my $res = LWP::UserAgent->new()->get('http://mixi.jp/');

Spy for object method

   use Module::Spy;

   my $ua = LWP::UserAgent->new();
   my $spy = spy_on($ua, 'request')->and_returns(HTTP::Response->new(200));

   my $res = $ua->get('http://mixi.jp/');

   ok $spy->called;

# DESCRIPTION

Module::Spy is spy library for Perl5.

# FUNCTIONS

- `my $spy = spy_on($class|$object, $method)`

   Create new spy. Returns new Module::Spy::Class or Module::Spy::Object instance.

# Module::Spy::(Class|Object) methods

- `$spy->called() :Bool`
- `$spy->and_called() :Bool`

   Returns true value if the method was called. False otherwise.

- `$spy->returns($value) : Module::Spy::Base`
- `$spy->and_returns($value) : Module::Spy::Base`

   Stub the method's return value as `$value`.

   Returns `<$spy`> itself for method chaining.

- `$spy->calls_any() : Bool`

   Returns false if the spy has not been called at all, and then true once at least one call happens.

- `$spy->calls_count() : Int`

   Returns the number of times the spy was called

- `$spy->calls_all() : Int`

   Returns arguments passed all calls

- `$spy->calls_most_recent() : ArrayRef`

   Returns arguments for the most recent call

- `$spy->calls_first() : ArrayRef`

   Returns arguments for the first call

- `$spy->calls_reset()`

   Clears all tracking for a spy

# SEE ALSO

The interface was inspired from Jasmine library [http://jasmine.github.io/](http://jasmine.github.io/).

# LICENSE

Copyright (C) Tokuhiro Matsuno.

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

# AUTHOR

Tokuhiro Matsuno <[email protected]>