Testing 如何拥有具有不同配置的多个测试环境?
我有一个Symfony 2应用程序,它使用REST交互。我想在不同的环境中执行集成测试。应在以下情况下执行测试:Testing 如何拥有具有不同配置的多个测试环境?,testing,symfony,phpunit,Testing,Symfony,Phpunit,我有一个Symfony 2应用程序,它使用REST交互。我想在不同的环境中执行集成测试。应在以下情况下执行测试: 或者针对真实接口(在特定主机上运行) 或针对实体模型接口(在本地主机上运行) 如何指定执行哪个测试环境?目前,我使用 phpunit -c app/ 从应用程序文件夹中。但是,我不想复制应用程序文件夹 更新 具体来说,我有一个REST服务,它负责执行REST调用,我们称之为RestBase。在某些情况下,它会建立一个URL,如:$urlpefix.$restPath$urlp
- 或者针对真实接口(在特定主机上运行)
- 或针对实体模型接口(在本地主机上运行)
phpunit -c app/
从应用程序文件夹中。但是,我不想复制应用程序文件夹
更新
具体来说,我有一个REST服务,它负责执行REST调用,我们称之为RestBase
。在某些情况下,它会建立一个URL,如:$urlpefix.$restPath
$urlpeffix
对于dev
、stage
、prod
环境是不同的。目前,此配置在config.*.yml
中完成。但是,我想对不同的urlpefix
运行测试。从概念上讲,我想要的是:
phpunit -c app/ **-env=test**
其中urlpeffix
是http://localhost:8888
和
phpunit -c app/ **-env=test2**
在另一个环境中运行,使用不同的urlpeffix
设置
总结问题
如何在
test
之外的另一个环境中执行测试,例如test2
(并且不以编程方式更改此环境)?因此您正在使用phpunit对REST api进行功能测试
Symfony2已经提供了一种通过直接调用http内核绕过前端控制器的方法
您只需扩展WebTestCase类(从Phpunit Test_Case继承自身):
使用Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
类MyControllerTest扩展了WebTestCase
{
公共函数testGET()
{
//创建新客户端以浏览应用程序
$client=static::createClient();
$crawler=$client->request('GET','/api/v1/test');
$this->assertTrue(200==$client->getResponse()->getStatusCode());
}
}
我最终编写了一个自定义的bootstrap.php
,如下所述:
然后,我使用以下命令启动配置:
phpunit -c app/mockup.phpunit.php
要对真实界面运行测试,请使用:
phpunit -c app/
这很清楚。如何根据测试环境设置url前缀?例如:
$this->container->getParameter(“urlpeffix”)。“/api/va1/test”
。请注意,我很清楚,通常如何为urlpeffix
设置不同的值。我的问题是如何使用不同的测试环境,即如何在test
之外的另一个环境中执行测试,例如test2
。只需添加一个选项数组:$client=static::createClient(数组('environment'=>'test2')代码>很好,但我希望将环境传递给测试,不希望以编程方式更改此设置。然后使用getenv
使用ENV变量,或使用$\u SERVER['argv']['ENV']
使用CLI参数;