Я использую DataFixtures, чтобы заполнить мою тестовую базу данных данными для юнит-тестов.
Для сущностей, которые не используют другие сущности, я могу установить первичный ключ с помощью setId.Для сущностей, которые используются другими сущностями, я могу установить его, но он игнорируется.
Например, я настраиваю своих пользователей так:
/** @var Gender $genderW */
$genderM = $this->getReference(GenderFixtures::TEST_GENDER_W);
$date = new DateTime('now');
/** @var User $user */
$user = new User();
$user
->setId(9)
->setFirstName('Hermione')
->setLastName('Granger')
->setEmail('test9@example.com')
->setGender($genderM)
->setPassword('odsf3_!45sr-f')
->setCreated($date);
$manager->persist($user);
$manager->flush();
$this->addReference(self::TEST_USER_REFERENCE_9, $user);
Как видите, я установил Idдля Гермионы, но если я сделаю var_dump в своих тестах, я вижу, что идентификатор пользователя увеличивается на количество пользователей в каждом тесте, который я запускаю.(9, 18, 27 ....)
В результате в моих тестах мне приходится выбирать пользователей по уникальному адресу электронной почты, что возможно, но очень раздражает:
$userRepo = $this->em->getRepository(User::class);
$this->user = $userRepo->findOneBy(['email' => 'test9@example.com']);
var_dump($this->user->getId());
Есть ли возможность изменить это, чтобы я мог получать своих пользователей по Id?
config:
"require": {
"php": "7.2.*",
"ext-ctype": "*",
"ext-iconv": "*",
"cache/predis-adapter": "^1.0",
"doctrine/doctrine-bundle": "^1.6.10",
"doctrine/doctrine-migrations-bundle": "^1.3",
"doctrine/orm": "^2.5.11",
"eightpoints/guzzle-bundle": "~7.3.1",
"friendsofsymfony/rest-bundle": "^2.3",
"guzzlehttp/guzzle": "^6.3",
"jms/serializer-bundle": "^2.4",
"predis/predis": "^1.1",
"sensio/framework-extra-bundle": "^5.2",
"snc/redis-bundle": "3.x-dev",
"symfony/apache-pack": "^1.0",
"symfony/console": "^4.1",
"symfony/flex": "^1.0",
"symfony/framework-bundle": "^4.1",
"symfony/lts": "^4@dev",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "^1.0",
"symfony/polyfill-apcu": "^1.5",
"symfony/security-bundle": "^4.0",
"symfony/swiftmailer-bundle": "^3.2",
"symfony/twig-bundle": "^4.1",
"symfony/validator": "^4.1",
"symfony/yaml": "^4.1"
},
"require-dev": {
"diablomedia/phpunit-pretty-printer": "2.0.*",
"doctrine/doctrine-fixtures-bundle": "^3.0",
"friendsofphp/php-cs-fixer": "*",
"phpmd/phpmd": "^2.6",
"sensiolabs/security-checker": "^4.1",
"squizlabs/php_codesniffer": "*",
"symfony/dotenv": "^4.1",
"symfony/maker-bundle": "^1.5",
"symfony/phpunit-bridge": "^4.1",
"symfony/var-dumper": "^4.1"
},