我有一个Symfony 2应用程序,它使用REST interace。我想用不同的环境执行集成测试。测试应该执行:
如何指定执行哪个测试环境?目前我使用
开始测试phpunit -c app/
从应用程序文件夹中。但是我不想复制app文件夹。
更新
具体来说,我有一个REST服务,它负责doint REST调用,我们称之为RestBase
。在某些时候,它会建立一个像:$urlPrefix.$restPath
这样的网址。 $urlPrefix
,dev
,stage
环境的prod
不同。目前,此配置在config_*.yml
中完成。但是,我想针对不同的urlPrefix
运行测试。从概念上讲,我希望有类似的东西:
phpunit -c app/ **-env=test**
其中urlPrefix
为http://localhost:8888
和
phpunit -c app/ **-env=test2**
针对另一个环境运行,并为urlPrefix
设置了不同的设置。
汇总问题
如何在test
以外的其他环境中执行测试,例如test2
(而不是以编程方式更改此内容)?
答案 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/