@@ -433,6 +433,66 @@ of the UUID parameters::
433433 }
434434 }
435435
436+ MockUuidFactory
437+ ===============
438+
439+ ..versionadded ::7.4
440+
441+ The:class: `Symfony\\ Component\\ Uid\\ Factory\\ MockUuidFactory ` class was introduced in Symfony 7.4.
442+
443+ The:class: `Symfony\\ Component\\ Uid\\ Factory\\ MockUuidFactory ` class allows you to
444+ control the UUIDs generated during your tests, making them predictable and reproducible.
445+
446+ Suppose you have a service that generates a UUID for each new user::
447+
448+ use Symfony\Component\Uid\Factory\UuidFactory;
449+ use Symfony\Component\Uid\Uuid;
450+
451+ class UserService
452+ {
453+ public function __construct(
454+ private UuidFactory $uuidFactory
455+ ){
456+ }
457+
458+ public function createUserId(): string
459+ {
460+ return $this->uuidFactory->create()->toRfc4122();
461+ }
462+ }
463+
464+ In your tests, you can use ``MockUuidFactory `` to inject predictable UUIDs and verify the expected behavior::
465+
466+ use PHPUnit\Framework\TestCase;
467+ use Symfony\Component\Uid\Factory\MockUuidFactory;
468+ use Symfony\Component\Uid\UuidV4;
469+
470+ class UserServiceTest extends TestCase
471+ {
472+ public function testCreateUserIdReturnsExpectedUuid()
473+ {
474+ $factory = new MockUuidFactory([
475+ UuidV4::fromString('11111111-1111-4111-8111-111111111111'),
476+ UuidV4::fromString('22222222-2222-4222-8222-222222222222'),
477+ ]);
478+
479+ $service = new UserService($factory);
480+
481+ $this->assertSame('11111111-1111-4111-8111-111111111111', $service->createUserId());
482+ $this->assertSame('22222222-2222-4222-8222-222222222222', $service->createUserId());
483+ }
484+ }
485+
486+ ..warning ::
487+
488+ ``MockUuidFactory `` is intended for use in tests only and should never be used in production.
489+
490+ ..note ::
491+
492+ - Supports the:method: `Symfony\\ Component\\ Uid\\ Factory\\ MockUuidFactory::create `,:method: `Symfony\\ Component\\ Uid\\ Factory\\ MockUuidFactory::randomBased `,:method: `Symfony\\ Component\\ Uid\\ Factory\\ MockUuidFactory::timeBased `, and:method: `Symfony\\ Component\\ Uid\\ Factory\\ MockUuidFactory::nameBased ` methods.
493+ - You can mix different UUID versions in the same sequence.
494+ - Throws an exception if the sequence is exhausted or the type does not match.
495+
436496.. _ulid :
437497
438498ULIDs