gpt4 book ai didi

php - 在 symfony 中测试 session

转载 作者:行者123 更新时间:2023-12-05 04:09:40 25 4
gpt4 key购买 nike

根据文档,我正在尝试在我的 PHPUnit 测试中模拟 session :

public function testAction()
{
$session = new Session(new MockArraySessionStorage());
$session->set('abc', 'xyz');
$client = static::createClient();
$client->getContainer()->set('session', $session);
$client->request('GET', '/');
}

在我的 Controller 中,我试图获取 session 值:

public function mainAction()
{
$session = $this->get('session');
var_dump($session->get('abc'), $session->all());die; //returns null and []
}

为什么这个东西不起作用?

最佳答案

我认为这是因为 session 是通过 cookie 解析的,而您没有设置将 session 链接到客户端的 cookie。

你应该添加:

    $client->getCookieJar()->set(new Cookie($session->getName(), $session->getId()));

有一个完整的用户登录示例:

    $session = $this->_container->get('session');
$user = $this->_em->getRepository('UserBundle:User')
->findOneByEmail($email);
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$session->set('_security_<security_context>', serialize($token));
$session->save();
$client->getCookieJar()->set(new Cookie($session->getName(), $session->getId()));

希望对你有帮助

关于php - 在 symfony 中测试 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45565428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com