chubbyphp / chubbyphp-mock
Chubbyphp Mock
1.7.0
2023-11-27 20:07 UTC
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
描述
一个辅助特性,用于简化在phpunit中进行模拟。
要求
- php: ^8.1
- phpunit/phpunit: ^10.4.2
安装
通过 Composer 安装,作为 chubbyphp/chubbyphp-mock。
composer require chubbyphp/chubbyphp-mock "^1.7" --dev
使用方法
<?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')); } }
常见问题解答
当调用 次时,对于方法名是任何值时期望失败。
已经提供了一个具有 $calls
的模拟,但模拟上没有调用任何方法。
/** @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();
版权
2024 Dominik Zogg