如何使用Symfony3在PHPUnit测试用例中填充/模拟服务器变量?

如何使用Symfony3在PHPUnit测试用例中填充/模拟服务器变量?,phpunit,symfony,request.servervariables,liipfunctionaltestbundle,Phpunit,Symfony,Request.servervariables,Liipfunctionaltestbundle,如何使用Symfony3在PHPUnit测试用例中填充/模拟服务器变量 我尝试为我的symfony3应用程序创建功能测试 我用 我有一个特殊的$\u服务器变量,其中包含访问者的国家/地区。动作的行为强烈地依赖于它 我尝试在我的测试用例中填充它 下面是基于 当我通过dump($this->client->getRequest())在unittest中获得请求时然后我看到我的变量: Symfony\Component\HttpFoundation\Request {#1009 +attribut

如何使用Symfony3在PHPUnit测试用例中填充/模拟服务器变量

我尝试为我的symfony3应用程序创建功能测试

我用

我有一个特殊的
$\u服务器
变量,其中包含访问者的国家/地区。动作的行为强烈地依赖于它

我尝试在我的测试用例中填充它

下面是基于

当我通过
dump($this->client->getRequest())在unittest中获得请求时然后我看到我的变量:

Symfony\Component\HttpFoundation\Request {#1009
  +attributes: Symfony\Component\HttpFoundation\ParameterBag {#1008
    #parameters: []
  }
  +request: Symfony\Component\HttpFoundation\ParameterBag {#1093
    #parameters: []
  }
  +query: Symfony\Component\HttpFoundation\ParameterBag {#1092
    #parameters: []
  }
  +server: Symfony\Component\HttpFoundation\ServerBag {#993
    #parameters: array:22 [
      "PHP_AUTH_USER"     => "test_login"
      "PHP_AUTH_PW"       => "test_password"
      "SERVER_NAME"       => "phpunit.symfony.dev"
      "HTTP_HOST"         => "phpunit.symfony.dev"
      "REQUEST_URI"       => "/app/setting"
      "DOCUMENT_ROOT"     => "/path/to/docroot/app/web"
      "COUNTRY_CODE"      => "AT"
      "HTTP_COUNTRY_CODE" => "AT"
      "SCRIPT_NAME"       => "thing/thong"
      "HTTP_REFERER"      => "/foo/bar"

      "SERVER_PORT" => 80
      "HTTP_USER_AGENT" => "Symfony BrowserKit"
      "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
      "HTTP_ACCEPT_LANGUAGE" => "en-us,en;q=0.5"
      "HTTP_ACCEPT_CHARSET" => "ISO-8859-1,utf-8;q=0.7,*;q=0.7"
      "REMOTE_ADDR" => "127.0.0.1"
      "SCRIPT_FILENAME" => ""
      "SERVER_PROTOCOL" => "HTTP/1.1"
      "REQUEST_TIME" => 1485369277
      "PATH_INFO" => ""
      "REQUEST_METHOD" => "GET"
      "QUERY_STRING" => ""
    ]
  }
但出于某种原因,在行动中

public function indexAction(Request $request)
{
    dump($_SERVER);
}
$\u服务器
变量包含Shell和环境变量:

"LESSOPEN"             => "| /usr/bin/lesspipe %s"
"PROFILEHOME"          => ""
"GNOME_KEYRING_PID"    => ""
"USER"                 => "developer"
"LANGUAGE"             => "en_US"
"UPSTART_INSTANCE"     => ""
"XDG_SEAT"             => "seat0"
"SESSION"              => "sess$58479"
"XDG_SESSION_TYPE"     => "x11"
"SHLVL"                => "2"
"HOME"                 => "/home/developer"
"DESKTOP_SESSION"      => "sess$58479"
"QT_LINUX_ACCESSIBILITY_ALWAYS_ON" => "1"
"SHELL_SESSION_ID"     => "78c26972fe6040009409a2bd8748034d"
"GTK_MODULES"          => "gail:atk-bridge:unity-gtk-module"
"XDG_SEAT_PATH"        => "/org/freedesktop/DisplayManager/Seat0"
"KONSOLE_DBUS_SESSION" => "/Sessions/1"
我做错了什么?
有没有办法在命令行中使用Symfony3和phpunit来模拟服务器变量?

我走错了路。我可以通过
$request
对象访问服务器变量:

public function indexAction(Request $request)
{
    dump($request->server->get('HTTP_HOST'));
    dump($request->server->get('COUNTRY_CODE'));
}

嗨,如果这个答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,您已经找到了解决方案。没有义务这样做。谢谢提醒。我想删除这个问题,但系统提醒我这不是一个好行为。前两天我也不能接受这个答案,然后我就忘了。
"LESSOPEN"             => "| /usr/bin/lesspipe %s"
"PROFILEHOME"          => ""
"GNOME_KEYRING_PID"    => ""
"USER"                 => "developer"
"LANGUAGE"             => "en_US"
"UPSTART_INSTANCE"     => ""
"XDG_SEAT"             => "seat0"
"SESSION"              => "sess$58479"
"XDG_SESSION_TYPE"     => "x11"
"SHLVL"                => "2"
"HOME"                 => "/home/developer"
"DESKTOP_SESSION"      => "sess$58479"
"QT_LINUX_ACCESSIBILITY_ALWAYS_ON" => "1"
"SHELL_SESSION_ID"     => "78c26972fe6040009409a2bd8748034d"
"GTK_MODULES"          => "gail:atk-bridge:unity-gtk-module"
"XDG_SEAT_PATH"        => "/org/freedesktop/DisplayManager/Seat0"
"KONSOLE_DBUS_SESSION" => "/Sessions/1"
public function indexAction(Request $request)
{
    dump($request->server->get('HTTP_HOST'));
    dump($request->server->get('COUNTRY_CODE'));
}