# NAME

Test::Mockingbird - Advanced mocking library for Perl with support for dependency injection and spies.

# VERSION

Version 0.01

# SYNOPSIS

    use Test::Mockingbird;

    # Mocking
    Test::Mockingbird::mock('My::Module', 'method', sub { return 'mocked!' });

    # Spying
    my $spy = Test::Mockingbird::spy('My::Module', 'method');
    My::Module::method('arg1', 'arg2');
    my @calls = $spy->(); # Get captured calls

    # Dependency Injection
    Test::Mockingbird::inject('My::Module', 'Dependency', $mock_object);

    # Unmocking
    Test::Mockingbird::unmock('My::Module', 'method');

    # Restore everything
    Test::Mockingbird::restore_all();

# DESCRIPTION

Test::Mockingbird provides powerful mocking, spying, and dependency injection capabilities to streamline testing in Perl.

# METHODS

## mock($package, $method, $replacement)

Mocks a method in the specified package.

## unmock($package, $method)

Restores the original method for a mocked method.

## spy($package, $method)

Spies on a method, tracking calls and arguments.

## inject($package, $dependency, $mock\_object)

Injects a mock object for a dependency.

## restore\_all()

Restores all mocked methods and dependencies to their original state.