Как настроить ClockMock с Phpunit 10+?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как настроить ClockMock с Phpunit 10+?

Сообщение Anonymous »

ClockMock — очень полезный инструмент для создания тестов, чувствительных ко времени, например. если дата находится в прошлом, A должна произойти, если она в будущем, должна произойти B.
ClockMock — это часть phunit-bridge, который отлично работал с Phpunit 8. Сейчас 2025 год, а текущая версия Phpunit — 11.
Эта проблема с документацией Symfony (#20344 (github.com)) подсказывает мне, что эта функция теперь должна работать и с Phpunit версии 10 или выше при условии, что вы используете phpunit-bridge 7.2
Конфигурация моего проекта:
  • symfony: 6.4
    php: 8.2
  • phpunit/phpunit: 10.5.41
  • symfony/phpunit-bridge: 7.2.0
В документации (https://symfony.com/doc/6.4/comComponen ... ck-mocking) сказано, что я мне нужно активировать прослушиватель в моем файле phpunit.xml, но Phpunit 10+ больше не знает эту опцию: Поэтому я удалил прослушиватель из моего XML-файла.
В моем тесте код выглядит следующим образом:
< pre class="lang-php Prettyprint-override">

Код: Выделить всё

class CompanyNameHelperTest extends TestCase
{
public function testGetCompanyNameByIdPast(): void
{
ClockMock::register(CompanyNameHelper::class);
ClockMock::withClockMock(true);
ClockMock::withClockMock(strtotime('2018-11-05 01:00:00'));
$myDate = (new DateTimeImmutable(date('Y-m-d H:m:s')));
$companyId = 1;
$this->assertEquals(
'ACME KG, Hamburg',
CompanyNameHelper::getCompanyNameById($companyId, $myDate)
);
ClockMock::withClockMock(false);
}
Это приводит к неудачному тесту, поскольку не используется дата из прошлого, а вместо этого используется текущее системное время.
Каков правильный способ использовать ClockMock в Phpunit версии 10 и выше?

Подробнее здесь: https://stackoverflow.com/questions/793 ... phpunit-10
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»