【问题标题】:Why Symfony 2 uses NativeSessionStorage for testing?为什么 Symfony 2 使用 NativeSessionStorage 进行测试?
【发布时间】:2015-06-11 21:55:41
【问题描述】:

我正在为我的控制器编写测试,但使用会话的控制器出现以下错误:

无法启动会话,因为第 139 行的 \"/home/rightink/public_html/project-file-manager/1.0/vendor/phpunit/phpunit/src/Util/Printer.php\" 已发送标头.

堆栈跟踪显示 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();

注意:堆栈跟踪显示这是导致异常的“开始”方法。

知道为什么会出现此会话错误吗?

谢谢,

文森特

【问题讨论】:

    标签: php symfony session phpunit native


    【解决方案1】:

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

    请以symfony2 service为例:

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

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

    希望有帮助

    【讨论】:

    • 谢谢。在我的情况下,会话在服务中使用,但注入它来代替创建它是有效的!请注意,在 Symfony 会话的文档中,他们创建会话变量,他们从不注入或获取服务:symfony.com/doc/current/components/http_foundation/…
    • 是的@Vincent,您参考解释如何在没有所有框架的情况下使用 symfony 组件的文档。
    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2011-11-19
    • 1970-01-01
    • 2018-01-15
    相关资源
    最近更新 更多