我正在尝试创建一个功能测试,该测试涉及跨重定向持久保存会话变量。登录部分似乎有效,但我无法设置和保留会话变量。
测试类扩展了WebTestCase。
$this->client = static::createClient();
$this->client->followRedirects();
认证
$user = $em->getRepository('MyApp\AppBundle\Entity\User')
->findOneByUsername('gagarin');
$firewall = 'secured_area';
$token = new UsernamePasswordToken($user, $user->getPassword(),
$firewall, $user->getRoles());
self::$kernel->getContainer()->get('security.context')->setToken($token);
$session = $this->client->getContainer()->get('session');
$session->set('_security_' . $firewall, serialize($token));
// tried $session->set('color_id', 1234) here
$session->save();
$cookie = new Cookie($session->getName(), $session->getId());
$this->client->getCookieJar()->set($cookie);
'/'路由将重定向到登录页面,然后返回到'/'页面 因为followRedirects设置为true。
$crawler = $this->client->request(
'GET',
'http://myapp.test/');
$this->assertTrue($this->client->getResponse()->isSuccessful());
我想要做的是设置一个会话变量(color_id
),我可以在请求的路由上断言,重定向到登录或其他'/'基于color_id路由到的页面。我该怎么做?