symfony - Symfony:在功能测试中验证用户
问题描述
我正在尝试在功能测试中对用户进行身份验证,以检查他是否被重定向。
我的控制器:
public function preRegisterAction()
{
if ($this->getUser() instanceof User) {
return new RedirectResponse();
}
return $this->render(
'pages/pre-register.html.twig'
);
}
我的测试:
public function setUp()
{
$this->client = static::createClient();
}
public function testPreRegisterAction()
{
$user = new User();
$user->setEmail('test@test.fr');
$user->setCreated(new \DateTime());
$user->setId(43);
$tokenStorage = $this->client->getContainer()->get('security.token_storage');
$tokenStorage->setToken(new UsernamePasswordToken($user, null, 'main', ['ROLE_USER']));
$this->client->request('GET', '/choix');
$this->assertTrue($this->client->getResponse()->isRedirection());
}
我不知道使用断言是否可以。但即使使用令牌存储似乎也不起作用。当我在控制器中执行令牌存储的 var_dump 时,我看不到我在测试中注入的用户。
解决方案
我不确切知道为什么您的代码在测试中不起作用。我对安全组件没有深入的了解,但是有两种推荐的方式来验证用户。
推荐阅读
- python - 抓取需要多个请求才能访问特定表的网站(连接的下拉菜单)
- javascript - TypeError: obj[key].includes 不是函数:在过滤器函数中
- javascript - 从 img 元素的 src 属性中的 blob URL 获取数据
- javascript - 如何为新数组(整数)使用动态数字?
- php - Laravel - 在数据库中存储动态选项的问题?
- php - 如何在数组中使用 for 循环
- javascript - 如何使用Javascript为有序列表中的每个项目分配一个值
- node.js - child 的 child 里面的 where 子句
- python - 列表 append() 不附加用户输入
- java - Java 异步客户端,意外行为