为什么Symfony 2使用NativeSessionStorage进行测试?

时间:2015-04-07 10:23:07

标签: php symfony session phpunit native

我正在为我的控制器编写测试,并且对于使用会话的控制器我收到以下错误:

  

无法启动会话,因为标题已由\" /home/rightink/public_html/project-file-manager/1.0/vendor/phpunit/phpunit/src/Util/Printer.php发送#34;在第139行。

堆栈跟踪显示Symfony正在使用" NativeSessionStorage.php"在执行不应该是这种情况的测试时。

我有以下config_test.yml文件:

imports:
- { resource: config_dev.yml }
- { resource: parameters_test.yml }

framework:
    test: ~
    session:
        storage_id: session.storage.mock_file
    profiler:
        collect: false

web_profiler:
    toolbar: false
    intercept_redirects: false

swiftmailer:
    disable_delivery: true

控制器正在使用如下会话:

$session = new Session();
$session->start();

注意:堆栈跟踪显示这是" start"导致异常的方法。

我知道为什么会出现这个会话错误?

谢谢,

文森特

1 个答案:

答案 0 :(得分:2)

您使用session元素作为独立用途。

请以symfony2 service为例使用会话:

public function indexAction($bar)
{
    $session = $this->get('session');
    $session->set('foo', $bar);

    // ...
}

Native Session用于PHP经典用法,其他选项适用于Mongo,Memcache等。更多信息here

希望这个帮助