我正在为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());
}
答案 0 :(得分:2)
正如您所说,http://symfony.localhost指向您的DEV环境,因此当您进行API调用时,您实际上是在该环境上进行调用。
要执行所需的操作,您需要“构建”测试环境:
Configure the environment variables for that new virtualhost as stated in the documentation。具体来说,您要设置APP_ENV进行测试。例如,在Apache中,您在virtualhost配置上编写:
SetEnv APP_ENV测试
使您的API调用到达该VirtualHost上定义的URL。
这样,您的API调用就已经完成了对测试环境的操作。
有关环境的更多信息: