em; // بستن عمدی: درج تکراری روی کلید یکتای موبایل. $existing = $this->createUser(['ROLE_USER']); try { $clash = new User($existing->getMobileNumber()); $clash->setRoles(['ROLE_USER']); $clash->setStatus(1); $this->em->persist($clash); $this->em->flush(); self::fail('درج تکراری باید شکست بخورد'); } catch (\Throwable) { // همان چیزی که در قرعهٔ تصادفی اتفاق می‌افتد. } self::assertFalse($before->isOpen(), 'INSERT شکست‌خورده باید EntityManager را ببندد'); static::getContainer()->get('doctrine')->resetManager(); $this->em = static::getContainer()->get(EntityManagerInterface::class); // کانتینر یک proxy برمی‌گرداند، پس هویت شیء عوض نمی‌شود؛ چیزی که اهمیت دارد // این است که پشتِ همان proxy یک EntityManager **باز** نشسته باشد. self::assertTrue($this->em->isOpen(), 'پس از ریست رجیستری باید مدیر باز باشد'); // و کار عادی باید ادامه پیدا کند. $fresh = $this->createUser(['ROLE_USER']); self::assertNotNull($fresh->getId()); } }