phpstan/phpstan-mockery

PHPStan Mockery extension

Installs: 22 547 189

Dependents: 711

Suggesters: 2

Security: 0

Stars: 98

Watchers: 3

Forks: 22

Open Issues: 10

Type:phpstan-extension

pkg:composer/phpstan/phpstan-mockery


README

Build Latest Stable Version License

This extension provides the following features:

  • Mockery::mock(), Mockery::spy(), and Mockery::namedMock() return an intersection type (e.g. Foo&MockInterface) so that the mock can be used as both the mocked class and a mock object. See the detailed explanation of intersection types.
  • Interprets Foo|\Mockery\MockInterface in phpDoc so that it results in an intersection type instead of a union type. This can be disabled by setting the mockery.convertUnionToIntersectionType parameter to false.
  • shouldReceive(), shouldNotReceive(), shouldHaveReceived(), shouldNotHaveReceived(), allows(), and expects() methods are understood on mock objects.
  • makePartial() and shouldAllowMockingProtectedMethods() return static, preserving the intersection type for chained calls.
  • Alias (alias:) and overload (overload:) mock prefixes are handled.
  • Partial mock syntax (ClassName[methodName]) is supported.
  • Multiple interfaces passed as comma-separated strings or as separate arguments are resolved.
  • Constructor argument arrays passed to mock() are handled correctly.

Installation

To use this extension, require it in Composer:

composer require --dev phpstan/phpstan-mockery

If you also install phpstan/extension-installer then you're all set!

Manual installation

If you don't want to use phpstan/extension-installer, include extension.neon in your project's PHPStan config:

includes:
    - vendor/phpstan/phpstan-mockery/extension.neon