symfony2 phpunit 会话未启动

问题描述 投票:0回答:1

我的应用程序中的 $_SESSION 有一个奇怪的问题

由于不同的原因,我没有在这里解释,我有必要在会话中设置我的 AppKernel.php 中的环境

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{

  protected $session;

  public function initializeContainer()
  {
    parent::initializeContainer();

    $this->session = $this->container->get('session');
    $this->session->set('isTestEnv', $this->getEnvironment() == 'test');
  }

在我用来管理对某些 API 的请求的另一个类中,我现在需要获取该参数

namespace Bioversity\ServerConnectionBundle\Repository;

use Symfony\Component\HttpFoundation\Session\Session;
use Bioversity\ServerConnectionBundle\Repository\ServerResponseManager;
use Bioversity\ServerConnectionBundle\Repository\ServerResponseRequestQueryManager;

class ServerRequestManager
{

  protected $wrapper= "http://url/to/the/api.php";   

  public function __construct()
  {
    if($_SESSION['_sf2_attributes']['isTestEnv'] == 'test')
    {
        $this->wrapper= "http://url/to/the/api.test.php";
    }
  }

浏览器中一切正常,但是当我尝试运行测试时,我收到一个奇怪的错误

48) ServerConnectionBundle\Tests\Repository\TraitConnectionRepositoryTest::testGetTags
ErrorException: Notice: Undefined variable: _SESSION in ServerConnectionBundle/Repository/ServerRequestManager.php line 41

--------------编辑------------

我更新了我的代码, 现在我有这样的服务 参数: 环境:%kernel.environment%

services:
    bioversity_server_connection:
        class: Bioversity\ServerConnectionBundle\Repository\ServerRequestManager
        arguments: [%env%]

在我的课堂上我添加了

class ServerRequestManager
{    
  public function __construct($env)
  {
    print_r($env);

    //if(array_key_exists('isTestEnv', $_SESSION['_sf2_attributes']))
    //{
        //if($_SESSION['_sf2_attributes']['isTestEnv'] == 'test'){
        if($env == 'test')
        {
            $this->wrapper= "http://temp.wrapper.grinfo.net/TIP/Wrapper.test.php";
            $this->setDatabaseOntology('TEST-'.$this->getDatabaseOntology());
            $this->setDatabasePGRSecure('TEST-'.$this->getDatabasePGRSecure());
            $this->setDatabaseUsers('TEST-'.$this->getDatabaseUsers());
        }
    //}
  }

我已在 config.yml 中导入 services.yml 但我只有这个错误

警告:Bioversity\ServerConnectionBundle\Repository\ServerRequestManager::__construct() 缺少参数 1,在 /home/aczepod/Sites/Bioversity/src/Bioversity/SecurityBundle/Repository/ServerConnection.php 中调用

现在怎么了!?

unit-testing symfony phpunit symfony2
1个回答
0
投票

哇哈哈,你到底在做什么。 Symfony 有参数

kernel.environment
指的是当前环境!如此简单地将
%kernel.environment%
作为参数注入到您的服务中。

顺便说一句。使用 PHP-CLI(运行测试)根本没有

$_SESSION

© www.soinside.com 2019 - 2024. All rights reserved.