Boa noite professor, segue o código
Classe de Teste
class UserRepositoryTest extends TestCase
{
private static EntityManagerInterface $entityManager;
private static UserRepository $userRepository;
public static function setUpBeforeClass(): void
{
self::$entityManager = (new EntityManagerFactory)->getEntityManager();
self::$userRepository = new UserRepository(self::$entityManager);
}
protected function setUp(): void
{
self::$entityManager->beginTransaction();
}
protected function tearDown(): void
{
self::$entityManager->rollback();
}
public function testPersistencyAndSearchOfANewUser(): void
{
$user = new User('Test', 'test@test.com', 'passwordtest1', 'passwordtest1');
self::$userRepository->persistUser($user);
$user = self::$userRepository->checkIfIsRegistered('Test', 'test@test.com');
self::assertSame('Test', $user->getName());
self::assertSame('test@test.com', $user->getEmail());
}
}
Pelo construtor do User eu apenas coloca as informações nas variáveis corretas.
O beginTransaction e rollBack estão sendo usados da forma correta?
UserRepository
class UserRepository
{
private EntityManagerInterface $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public function persistUser(User $user): void
{
$this->entityManager->persist($user);
$this->entityManager->flush();
}
}
Só coloquei o código da função de persistência porque é nela que ocorre o erro. Na função de teste onde eu procuro logo depois de dar a persistência, o código funciona dando um erro que nenhum um usuário foi encontrado, pois a persistência não ocorreu.
A linha 36 onde acontece o erro é quando eu chamo a função "self::$userRepository->persistUser($user);" na classe de testes. E a linha 44 é bem no flush da função de persistência "$this->entityManager->flush();".
Stack Trace:
projeect\Tests\Model\Repositories\UserRepositoryTest::testPersistencyAndSearchOfANewUser
ReflectionException: Given object is not an instance of the class this property was declared in
C:\xampp\htdocs\projeect\vendor\doctrine\persistence\lib\Doctrine\Persistence\Reflection\TypedNoDefaultReflectionProperty.php:21
C:\xampp\htdocs\project\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ReflectionEmbeddedProperty.php:81
C:\xampp\htdocs\project\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php:644
C:\xampp\htdocs\project\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php:503
C:\xampp\htdocs\project\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php:817
C:\xampp\htdocs\project\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php:344
C:\xampp\htdocs\project\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php:371
C:\xampp\htdocs\project\src\Model\Repositories\UserRepository.php:44
C:\xampp\htdocs\project\tests\Model\Repositories\UserRepositoryTest.php:36
Desde já, agradeço!