在测试环境上进行Symfony 4 API测试

时间:2019-05-20 11:51:24

标签: php api symfony phpunit

我正在为api $client->request('POST', 'http://symfony.localhost/purchase', ['headers' => $headers]);编写测试。我使用测试sqlite db设置了测试环境,但是请求中调用的API继续在dev db上编写。我想http请求不允许识别环境。 (P.S. test env可以正常工作,并与其他单元测试一起尝试过)。我该如何告知/购买使用测试环境?

这是我的测试

public function testAdd()
{
    $client = new \GuzzleHttp\Client();
    $token = $this->encrypt('testaauser@mail.com', 'carouge', 'basic');
    $headers = [
        'Authorization' => 'Bearer ' . $token,
        'Accept'        => 'application/json',
    ];

    $res = $client->request('POST', 'http://symfony.localhost/purchase', ['headers' => $headers]);
    $this->assertEquals(201, $res->getStatusCode());
}

1 个答案:

答案 0 :(得分:2)

正如您所说,http://symfony.localhost指向您的DEV环境,因此当您进行API调用时,您实际上是在该环境上进行调用。

要执行所需的操作,您需要“构建”测试环境:

  1. 在您的网络服务器中创建一个新的虚拟主机,其新URL指向与您的开发环境相同的安装,但具有新URL(例如:http://symfony.test)。
  2. Configure the environment variables for that new virtualhost as stated in the documentation。具体来说,您要设置APP_ENV进行测试。例如,在Apache中,您在virtualhost配置上编写:

    SetEnv APP_ENV测试

  3. 使您的API调用到达该VirtualHost上定义的URL。

这样,您的API调用就已经完成了对测试环境的操作。

有关环境的更多信息:

https://symfony.com/doc/4.1/configuration/environments.html