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

Why Symfony 2 uses NativeSessionStorage for testing?

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

Failed to start the session because headers have already been sent by \"/home/rightink/public_html/project-file-manager/1.0/vendor/phpunit/phpunit/src/Util/Printer.php\" at line 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" 方法。

知道为什么我会收到此会话错误吗?

谢谢,

文森特

您正在使用 session 元素作为独立用法。

请以会话为symfony2 service为例:

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

    // ...
}

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

希望对您有所帮助