# Mockery

Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit’s phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.

## Mock Objects

In unit tests, mock objects simulate the behaviour of real objects. They are commonly utilised to offer test isolation, to stand in for objects which do not yet exist, or to allow for the exploratory design of class APIs without requiring actual implementation up front.

The benefits of a mock object framework are to allow for the flexible generation of such mock objects (and stubs). They allow the setting of expected method calls and return values using a flexible API which is capable of capturing every possible real object behaviour in way that is stated as close as possible to a natural language description.

## Getting Started

Ready to dive into the Mockery framework? Then you can get started by reading the “Getting Started” section!

- Installation

- Upgrading

- Simple Example

- Quick Reference

## Reference

The reference contains a complete overview of all features of the Mockery framework.

- Creating Test Doubles

- Expectation Declarations

- Argument Validation

- Alternative shouldReceive Syntax

- Spies

- Creating Partial Mocks

- Mocking Protected Methods

- Mocking Public Properties

- Mocking Public Static Methods

- Preserving Pass-By-Reference Method Parameter Behaviour

- Mocking Demeter Chains And Fluent Interfaces

- Dealing with Final Classes/Methods

- PHP Magic Methods

- PHPUnit Integration

## Mockery

Learn about Mockery’s configuration, reserved method names, exceptions…

- Mockery Global Configuration

- Mockery Exceptions

- Reserved Method Names

- Gotchas!

## Cookbook

Want to learn some easy tips and tricks? Take a look at the cookbook articles!

- Default Mock Expectations

- Detecting Mock Objects

- Not Calling the Original Constructor

- Mocking Hard Dependencies (new Keyword)

- Class Constants

- Big Parent Class

- Complex Argument Matching With Mockery::on