【发布时间】:2020-08-31 05:15:26
【问题描述】:
您好,我有一个问题,我有一个包含这个的脚本
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 而不是@987654327 @)
当然,当我在单元测试中创建一个新的 User() 对象时,它没有 ID,这是由 EntityManager 设置的(对我来说,魔法)
我已经尝试过使用
$reflectionClass = new ReflectionClass(get_class($user));
$idProperty = $reflectionClass->getProperty('id');
$idProperty->setAccessible(true);
$idProperty->setValue($user, 1);
但这无济于事,任何人都知道如何解决此错误:
1) App\Tests\Service\UserServiceTest::addTest
Expectation failed for method name is equal to 'addUpdate' when invoked 1 time(s)
Parameter 0 for invocation App\Service\DataService::addUpdate(App\Entity\User Object (...)): void does not match expected value.
Failed asserting that two objects are equal.
--- Expected
+++ Actual
@@ @@
App\Entity\User Object (
- 'id' => 1
+ 'id' => null
'name' => 'test'
'identifier' => null
'email' => 'test@test.nl'
【问题讨论】:
-
该 ID 设置在哪里?在给定的代码中,你不要操纵它
标签: php doctrine phpunit symfony4