Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Phpunit Extensions Laravel Package

lendable/phpunit-extensions

View on GitHub
Deep Wiki
Context7

Lendable PHPUnit Extensions

[!WARNING] This library is still in early development.

Installation

Install through Composer:

composer require --dev lendable/phpunit-extensions

Features

Strict mocking

By default, when creating a mock all method return values are stubbed based on typing information. E.g.

public function foo(): int 
{
    return $this->foo;
}

Will be stubbed to return 0. This library ships two mechanisms to simplify disabling this functionality to force all methods called on a mock to be configured explicitly.

  • If you extend from Lendable\PHPUnitExtensions\TestCase, this will be enabled. If you can just extend from this class it is the simplest way to opt-in to all functionality.
  • The trait Lendable\PHPUnitExtensions\StrictMocking is provided to enable this alone. If you are forced into using another abstract *TestCase (e.g. from a vendor) this can be added into the class hierarchy.

PHPStan

A PHPStan extension is provided to enforce usage of features of this library.

Add the rules into your PHPStan configuration:

rules:
    # ...
    - vendor/lendable/phpunit-extensions/phpstan/rules.neon

Configure any exclusions you may have:

lendable_phpunit:
    enforceStrictMocking:
        pardoned:
            - Foo\Bar\MyTest

Rector

A Rector rule is provided to automate adopting strict mocking across a test suite.

Lendable\PHPUnitExtensions\Rector\EnforceDisableReturnValueGenerationForTestDoublesRector adds PHPUnit's #[DisableReturnValueGenerationForTestDoubles] attribute to test classes that do not already have it. Abstract classes are skipped, since the attribute only has an effect when placed on the concrete test class.

Register the rule in your Rector configuration:

use Lendable\PHPUnitExtensions\Rector\EnforceDisableReturnValueGenerationForTestDoublesRector;
use Rector\Config\RectorConfig;

return RectorConfig::configure()
    // ...
    ->withRules([EnforceDisableReturnValueGenerationForTestDoublesRector::class]);

With the closure-style configuration, register it via $rectorConfig->rule(EnforceDisableReturnValueGenerationForTestDoublesRector::class).

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel