为什么PHPUnit中的Symfony URL生成器指向localhost?

时间:2016-02-04 14:09:29

标签: docker docker-compose symfony

我正在使用Symfony 3和PHP 5.6,我已经使用PHPUnit设置了一个单元测试,它向控制器发出请求:

$this->client->request('GET', '/api');

URL /api处的控制器同时向本地Web服务器发出几个Curl请求。有类似的东西:

do_http_requests([
    $this->get('router')->generate(
        'route', $params, UrlGeneratorInterface::ABSOLUTE
    ),
    ...
]);

此操作失败,因为生成的网址指向localhosthttp://localhost/...)而不是webhttp://web/...),这是我为本地网络服务器设置的主机名。我收到错误Connection refused,因为没有人在主持人localhost上收听。服务器在主机web上运行。

我还设置了一个环境变量:

SYMFONY__ROUTER__REQUEST_CONTEXT__HOST=web

我希望router服务能够获取该环境变量并相应地生成URL,如this guide中所述。但事实并非如此。

我误解或错过了什么?

感谢您提供的任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

我应该在我的测试中使用它:

$this->client->request('GET', '/api', [], [], ['HTTP_Host' => 'web']