Тест Symfony 4 API в тестовой среде - PullRequest
0 голосов
/ 20 мая 2019

Я пишу тест для API $client->request('POST', 'http://symfony.localhost/purchase', ['headers' => $headers]);.Я установил тестовую среду с тестовой базой данных sqlite, но API, вызванный в запросе, продолжает писать на dev db.Полагаю, http-запрос не позволяет распознать окружение.(PS test env работает нормально, пробовал с другими юнит-тестами).Как я могу сказать / купить использовать тестовый env?

Это мой тест:

public function testAdd()
{
    $client = new \GuzzleHttp\Client();
    $token = $this->encrypt('testaauser@mail.com', 'carouge', 'basic');
    $headers = [
        'Authorization' => 'Bearer ' . $token,
        'Accept'        => 'application/json',
    ];

    $res = $client->request('POST', 'http://symfony.localhost/purchase', ['headers' => $headers]);
    $this->assertEquals(201, $res->getStatusCode());
}

1 Ответ

2 голосов
/ 15 июля 2019

Как вы сказали, ваш http://symfony.localhost указывает на вашу среду DEV, поэтому, когда вы делаете вызов API, вы действительно делаете вызов в этой среде.

Чтобы делать то, что вы хотите,вам нужно "создать" тестовую среду:

  1. Создайте новый виртуальный хост на вашем веб-сервере с новым URL-адресом, указывающим на ту же установку вашей среды разработки, но с новым URL-адресом (например: http://symfony.test).
  2. Сконфигурируйте переменные среды для этого нового виртуального хоста, как указано в документации . Конкретно, вы хотите настроить тестирование APP_ENV. Например, в Apache вы пишете в конфигурацию virtualhost:

    SetEnv APP_ENV test

  3. Выполните вызовы API по URL-адресу, определенному для этого VirtualHost.

При этом ваш APIв вашей тестовой среде выполняются вызовы.

Дополнительная информация о средах:

https://symfony.com/doc/4.1/configuration/environments.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...