【问题标题】:How to have multiple test environments with different configurations?如何拥有具有不同配置的多个测试环境?
【发布时间】:2012-03-22 19:15:56
【问题描述】:

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

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

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

phpunit -c app/ 

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

更新

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

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

其中urlPrefixhttp://localhost:8888

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

在另一个环境中运行,urlPrefix 的设置不同。

问题总结

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

【问题讨论】:

    标签: testing symfony phpunit


    【解决方案1】:

    所以你正在使用 phpunit 对你的 REST api 进行功能测试。

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

    您所要做的就是扩展 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());
    }
    }
    

    【讨论】:

    • 很清楚。如何有基于测试环境的 url 前缀?例如:$this->container->getParameter("urlPrefix")."/api/va1/test".
    • 请注意,我很清楚如何为urlPrefix 设置不同的值。我的问题是如何使用不同的测试环境,即如何在 test 之外的另一个环境中执行测试,例如test2.
    • 只需添加一组选项:$client = static::createClient(array('environment' => 'test2'));
    • 很高兴知道,但我想将环境传递给测试,并且不想以编程方式更改它。
    • 然后使用getenv 使用ENV 变量或使用$_SERVER['argv']['env'] 使用CLI 参数;
    【解决方案2】:

    我最终编写了一个自定义 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/
    

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 2021-06-12
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      相关资源
      最近更新 更多