如何在功能测试期间使用Symfony2的会话服务保留数据?

Ste*_*nte 4 php unit-testing symfony

我正在为使用Symfony2的会话服务获取数据的操作编写功能测试.在我的测试类的setUp方法中,我打电话$this->get('session')->set('foo', 'bar');.如果我在实际测试方法print_r($this->get('session')->all());setUp或在实际测试方法中输出所有会话数据(使用),我会回来foo => bar.但是如果我尝试从正在测试的动作输出会话数据,我会得到一个空数组.有谁知道为什么会这样,我怎么能阻止它?

我应该注意,如果我$_SESSION['foo'] = 'bar'setUp()数据内部调用是持久的,我可以从操作中访问它 - 这个问题似乎是Symfony2会话服务的本地问题.

Jak*_*las 7

首先尝试使用客户端的容器(我假设你正在使用WebTestCase):

$client = static::createClient();
$container = $client->getContainer();
Run Code Online (Sandbox Code Playgroud)

如果仍然无效,请尝试保存会话:

$session = $container->get('session');
$session->set('foo', 'bar');
$session->save();
Run Code Online (Sandbox Code Playgroud)

我没有在功能测试中尝试它,但这是它在Behat步骤中的工作方式.