如何使用不同配置的多个测试环境?

时间:2012-03-05 09:51:19

标签: testing symfony phpunit

我有一个Symfony 2应用程序,它使用REST interace。我想用不同的环境执行集成测试。测试应该执行:

  • 针对真实界面(在特定主机上运行)
  • 或针对模型接口(在localhost上运行)。

如何指定执行哪个测试环境?目前我使用

开始测试
phpunit -c app/ 

从应用程序文件夹中。但是我不想复制app文件夹。

更新

具体来说,我有一个REST服务,它负责doint REST调用,我们称之为RestBase。在某些时候,它会建立一个像:$urlPrefix.$restPath这样的网址。 $urlPrefixdevstage环境的prod不同。目前,此配置在config_*.yml中完成。但是,我想针对不同的urlPrefix运行测试。从概念上讲,我希望有类似的东西:

phpunit -c app/ **-env=test**

其中urlPrefixhttp://localhost:8888

phpunit -c app/ **-env=test2**

针对另一个环境运行,并为urlPrefix设置了不同的设置。

汇总问题

如何在test以外的其他环境中执行测试,例如test2(而不是以编程方式更改此内容)?

2 个答案:

答案 0 :(得分:1)

因此,您正在使用phpunit对REST api进行功能测试。

Symfony2已经提供了一种通过直接调用http Kernel来绕过前端控制器的方法。

您所要做的就是扩展WebTestCase类(从Phpunit Test_Case继承自己):

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class MyControllerTest extends WebTestCase
{
public function testGET()
{
    // Create a new client to browse the application
    $client = static::createClient();

    $crawler = $client->request('GET', '/api/v1/test');
    $this->assertTrue(200 === $client->getResponse()->getStatusCode());
}
}

答案 1 :(得分:1)

我最后编写了一个自定义bootstrap.php,如下所述:http://php-and-symfony.matthiasnoback.nl/2011/10/symfony2-use-a-bootstrap-file-for-your-phpunit-tests-and-run-some-console-commands/

然后我使用以下命令启动配置:

phpunit -c app/mockup.phpunit.php

使用以下命令对真实界面运行测试:

phpunit -c app/