设置会话变量以在Symfony控制器中使用PHPUnit测试时使用重定向

时间:2016-06-24 10:17:08

标签: php symfony session phpunit functional-testing

我正在尝试创建一个功能测试,该测试涉及跨重定向持久保存会话变量。登录部分似乎有效,但我无法设置和保留会话变量。

测试类扩展了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路由到的页面。我该怎么做?

0 个答案:

没有答案