【发布时间】:2021-12-03 15:04:24
【问题描述】:
在我的服务方法中,我正在嘲笑我在用户表中保留实体的部分,例如:
$user = $this->tokenStorage->getToken()->getUser();
$userFirstName = 'Unknown user';
$new = new MyEntity();
if ($user != 'anon.') {
$new->setUserId($user);
$userFirstName = $user->getFirstName();
}
我正在一个单独的测试方法中编写该部分,我想返回特定的用户对象,这意味着我想测试它..
public function testUser()
{
$tokenStorage = $this->createMock(TokenStorageInterface::class);
$userRepo = $this->createMock(UserRepository::class);
$username = ['username' => 'test@test.com']; // this will find the entry in the DB
$testUserObject = new User();
$userRepo->expects($this->any())
->method('findOneBY')
->with($username)
->will($this->returnValue($testUserObject));
$user = $tokenStorage->getToken()->getUser();
$this->assertEquals($testUserObject, $user);
}
但我明白了:
错误:在 null 上调用成员函数 getUser()
我认为这是我的测试数据库中的用户..
或者也许这不是测试这种情况的正确方法?有人可以帮助我编写测试的新手..
另一个问题是,我可以使用这个测试方法的返回值并使用它的用户对象来测试我保存这个用户对象的整个方法吗?
【问题讨论】:
标签: php unit-testing symfony testing