Symfony Entity id 在单元测试中为空



嗨,我有一个问题,我有一个脚本有这个

public function add(Request $request): UserResponse
{
$user = new User();
/** @var $request UserRequest */
$user->setName($request->getName());
$user->setEmail($request->getEmail());
$this->dataService->addUpdate($user);
return new UserResponse(
$user->getId(),
$user->getName(),
$user->getEmail()
);
}

现在我想对这个函数进行单元测试,但它给了我一个错误,即$user->getId()null而不是int(UserResponse()希望第一个参数int而不是null(

但是当然,当我在单元测试中创建一个新的User()对象时,它没有ID,这是由EntityManager设置的(对我来说,魔术(

我已经尝试做某事

$reflectionClass = new ReflectionClass(get_class($user));
$idProperty = $reflectionClass->getProperty('id');
$idProperty->setAccessible(true);
$idProperty->setValue($user, 1);

但这无济于事,任何人都知道如何解决此错误:

1) AppTestsServiceUserServiceTest::addTest
Expectation failed for method name is equal to 'addUpdate' when invoked 1 time(s)
Parameter 0 for invocation AppServiceDataService::addUpdate(AppEntityUser Object (...)): void does not match expected value.
Failed asserting that two objects are equal.
--- Expected
+++ Actual
@@ @@
AppEntityUser Object (
-    'id' => 1
+    'id' => null
'name' => 'test'
'identifier' => null
'email' => 'test@test.nl'

只有在您坚持和冲洗时,来自实体的 id 才会自动生成 id。

public function add(Request $request, EntityManagerInterface $em): UserResponse
{
$user = new User();
/** @var $request UserRequest */
$user->setName($request->getName());
$user->setEmail($request->getEmail());
$em->persist($user);
$em->flush();
dd($user->getId);
}

最新更新