Wie konfiguriere ich ClockMock mit PHPUnit 10+ richtig?Php

PHP-Programmierer chatten hier
Guest
 Wie konfiguriere ich ClockMock mit PHPUnit 10+ richtig?

Post by Guest »

ClockMock ist ein sehr nützliches Tool zum Erstellen zeitkritischer Tests, z. B. Wenn ein Datum in der Vergangenheit liegt, sollte A passieren, wenn es in der Zukunft liegt, sollte B passieren.
ClockMock ist ein Teil der Phunit-Brücke, die mit PHPUnit 8 gut funktioniert hat. Jetzt ist es so Das Jahr 2024 und die aktuelle Version von phpunit ist 11.
Diese Github-Seite https://github.com/symfony/symfony-docs/issues/20344 schlägt diese Funktion vor sollte jetzt auch mit phpunit Version 10 oder höher funktionieren, vorausgesetzt Sie verwenden phpunit-bridge 7.2
Hier ist meine Projektkonfiguration:
  • < li>symfony: 6.4
  • php: 8.2
  • phpunit/phpunit: 10.5.41
  • symfony/ phpunit-bridge: 7.2.0
Die Dokumentation (https://symfony.com/doc/6.4/components/ ... ck-mocking) besagt, dass ich Ich muss einen Listener in meiner phpunit.xml-Datei aktivieren, aber phpunit 10+ kennt diese Option nicht mehr:

Code: Select all



Also habe ich den Listener aus meiner XML-Datei entfernt.
In meinem Test lautet der Code wie folgt:
< pre class="lang-php Prettyprint-override">

Code: Select all

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);
}
Was dazu führt, dass der Test fehlschlägt, da nicht das Datum aus der Vergangenheit und stattdessen die aktuelle Systemzeit verwendet wird.
Na und Ist die richtige Art und Weise, ClockMock in PHPUnit Version 10 und höher zu verwenden/aktivieren?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post