Testing 如何拥有具有不同配置的多个测试环境?

Testing 如何拥有具有不同配置的多个测试环境?,testing,symfony,phpunit,Testing,Symfony,Phpunit,我有一个Symfony 2应用程序,它使用REST交互。我想在不同的环境中执行集成测试。应在以下情况下执行测试: 或者针对真实接口(在特定主机上运行) 或针对实体模型接口(在本地主机上运行) 如何指定执行哪个测试环境?目前,我使用 phpunit -c app/ 从应用程序文件夹中。但是,我不想复制应用程序文件夹 更新 具体来说,我有一个REST服务,它负责执行REST调用,我们称之为RestBase。在某些情况下,它会建立一个URL,如:$urlpefix.$restPath$urlp

我有一个Symfony 2应用程序,它使用REST交互。我想在不同的环境中执行集成测试。应在以下情况下执行测试:

  • 或者针对真实接口(在特定主机上运行)
  • 或针对实体模型接口(在本地主机上运行)
如何指定执行哪个测试环境?目前,我使用

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参数;