chubbyphp / chubbyphp-mock
Chubbyphp Mock
Installs: 174 794
Dependents: 36
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: ^8.1
- ext-json: *
- phpunit/phpunit: ^10.4.2
Requires (Dev)
- chubbyphp/chubbyphp-dev-helper: dev-master
- infection/infection: ^0.27.8
- php-coveralls/php-coveralls: ^2.7.0
- phpstan/extension-installer: ^1.3.1
- phpstan/phpstan: ^1.10.45
README
Description
A helper trait simplify mocking within phpunit.
Requirements
- php: ^8.1
- phpunit/phpunit: ^10.4.2
Installation
Through Composer as chubbyphp/chubbyphp-mock.
composer require chubbyphp/chubbyphp-mock "^1.7" --dev
Usage
<?php declare(strict_types=1); namespace MyProject\Tests; use Chubbyphp\Mock\Argument\ArgumentCallback; use Chubbyphp\Mock\Argument\ArgumentInstanceOf; use Chubbyphp\Mock\Call; use Chubbyphp\Mock\MockByCallsTrait; use MyProject\Services\DateTimeService; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; class MyTest extends TestCase { use MockByCallsTrait; public function testExecute() { /** @var DateTimeService|MockObject $dateTimeService */ $dateTimeService = $this->getMockByCalls(DateTimeService::class, [ Call::create('format') ->with(new ArgumentInstanceOf(\DateTime::class), 'c'), ->willReturn('2004-02-12T15:19:21+00:00') Call::create('format') ->with( new ArgumentCallback(function ($dateTime) { self::assertInstanceOf(\DateTime::class, $dateTime); }), 'c' ) ->willReturn('2008-05-23T08:12:55+00:00') ]); self::assertSame('2004-02-12T15:19:21+00:00' , $dateTimeService->format(new \DateTime(), 'c')); self::assertSame('2008-05-23T08:12:55+00:00' , $dateTimeService->format(new \DateTime(), 'c')); } }
FAQ
Expectation failed for method name is anything when invoked <n...> time(s).
There is a mock with $calls
given, but no method get called on the mock.
/** @var User|MockObject $user */ $user = $this->getMockByCalls(User::class, [ Call::create('getId')->with()->willReturn('a656cca7-7363-4ba7-875d-74bb0fd4f543'), ]); // uncomment and test will be green //$user->getId();
Copyright
2024 Dominik Zogg