Как создать несколько тестовых сред с разными конфигурациями? - PullRequest
0 голосов
/ 05 марта 2012

У меня есть приложение Symfony 2, которое использует REST-взаимодействие.Я хочу выполнить интеграционные тесты с различными средами.Тесты должны быть выполнены:

  • либо на реальном интерфейсе (работающем на определенном хосте)
  • , либо на макете интерфейса (работающем на локальном хосте).

Как я могу указать, какая тестовая среда выполняется?В настоящее время я запускаю тесты, используя

phpunit -c app/ 

из папки приложения.Однако я не хочу дублировать папку приложения.

Обновление

В частности, у меня есть служба REST, которая отвечает за вызовы doint REST, давайте назовем ее RestBase,В какой-то момент он создает URL-адрес, например: $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 (и не изменять это программно)?

Ответы [ 2 ]

1 голос
/ 05 марта 2012

В итоге я написал пользовательский bootstrap.php, как описано здесь: http://php -and-symfony.matthiasnoback.nl / 2011/10 / symfony2-use-a-bootstrap-file-for-your-your-your-phpunit-tests-and-run-some-console-команды /

Затем я запускаю конфигурацию, используя:

phpunit -c app/mockup.phpunit.php

Чтобы запустить тесты с реальным интерфейсом, используя:

phpunit -c app/
1 голос
/ 05 марта 2012

Итак, вы функционально тестируете свой REST API с помощью phpunit.

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());
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...