Я пишу функциональный тест для действия, которое использует службу сеансов Symfony2 для извлечения данных.  В методе setUp моего тестового класса я вызываю $this->get('session')->set('foo', 'bar');  ,  Если я выведу все данные сеанса (используя print_r($this->get('session')->all()); ) либо в setUp либо в реальном методе тестирования, я возвращаюсь foo => bar .  Но если я попытаюсь выдавать данные сеанса из проверяемого действия, я возвращаю пустой массив.  Кто-нибудь знает, почему это происходит, и как я могу это предотвратить? 
  Я должен отметить, что если я вызову $_SESSION['foo'] = 'bar' изнутри setUp() данные сохраняются, и я могу получить к нему доступ из действия – эта проблема кажется локальной для сеансовой службы Symfony2. 
Сначала попробуйте использовать контейнер своего клиента (я предполагаю, что вы используете WebTestCase):
 $client = static::createClient(); $container = $client->getContainer(); 
Если он по-прежнему не работает, попробуйте сохранить сеанс:
 $session = $container->get('session'); $session->set('foo', 'bar'); $session->save(); 
Я не пробовал это в функциональных тестах, но так оно и работает в шагах Behat.
Вы можете получить услугу «сеанс». С помощью этой услуги вы можете:
Код может быть следующим:
 use Symfony\Component\BrowserKit\Cookie; .... .... public function testARequestWithSession() { $client = static::createClient(); $session = $client->getContainer()->get('session'); $session->start(); // optional because the ->set() method do the start $session->set('foo', 'bar'); // the session is started here if you do not use the ->start() method $session->save(); // important if you want to persist the params $client->getCookieJar()->set(new Cookie($session->getName(), $session->getId())); // important if you want that the request retrieve the session $client->request( .... ... 
Cookie с $ session-> getId () должен быть создан после начала сеанса
См. Документацию http://symfony.com/doc/current/testing/http_authentication.html#creating-the-authentication-token