Настойчивость функционального теста Symfony2

Я пытаюсь немного поиграть с функциональным тестом в Symfony, и сейчас у меня проблемы с моими сеансами. Я выполняю кусок кода, который, кажется, работает, но ничего не хранится внутри сеанса моего контейнера.

У меня есть форма, где вы устанавливаете данные. Когда вы отправляете его, он проверяет значения и сохраняет их внутри сеансов. Затем он перенаправляется на другую страницу, где эти значения хранятся в сеансе.

Цель моего теста – проверить сеанс.

<?php namespace Acme\TestBundle\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage; use Symfony\Component\HttpFoundation\Session\Session; class FrontControllerTest extends WebTestCase { public function testForm() { $client = static::createClient(); $session = $client->getContainer()->get('session'); $crawler = $client->request('GET', '/setParameters'); $form = $crawler->selectButton('Submit')->form(); $form['myForm[firstname]']->setValue('Ben'); $form['myForm[lastname]']->setValue('H'); $client->submit($form); //I tested and my controller is fully going through the submit handler //which check the values and save it into the session //Things are 100% sure there. Then it redirects to another page which check those values. $values = $client->getContainer()->get('session')->get('parameters'); //NULL $this->assertEquals($values['firstname'], 'Ben'); //false $this->assertEquals($values['lastname'], 'H'); //false } } 

На самом деле это совсем не работает, похоже, я ничего не могу хранить в сеансе и извлекать его.

Может кто-нибудь мне помочь? Благодаря.

Контейнер, который вы используете в своем тесте, не является контейнером, который используется запросами, которые вы запускаете. Symfony создает новые контейнеры для каждого запроса. Таким образом, вы не можете получить доступ к сеансу напрямую через контейнер.

См. Также http://alexandre-salome.fr/blog/Symfony2-Isolation-Of-Tests

Возможным решением было бы извлечь идентификатор сеанса из ваших файлов cookie, а затем прочитать сеанс из хранилища сеансов.