codeception symfony functional Получение клиента (client) - через что слать запросы - Функциональные тесты

Проверялось на: Symfony 6, Symfony 7, Codeception 5

Базовый класс (от него можно наследовать ваши Cest-классы, которые являются основным подходом в кодэсепшене) для тестовых наборов может выглядеть напр. так:

<?php

namespace App\Tests\_support;

use App\Tests\FunctionalTester;
use Doctrine\ORM\EntityManagerInterface;

class BaseFunctionalCest
{
    use CommonFunctionalTrait;

    protected $inited = false;

    protected EntityManagerInterface $em;

    protected FunctionalTester $functionalTester;

    public function _before(FunctionalTester $I, )
    {
        $this->initMe($I);
    }


    protected function initMe(FunctionalTester $I)
    {
        if (!$this->inited) {
            $this->functionalTester = $I;
            $this->getEntityManager();
            $this->runInitConsoleCommands();
        }
    }

    protected function getApiVersion() {
        return 'v1';
    }

    protected function getEntityManager()
    {
        $this->em = $this->functionalTester->grabService('doctrine')->getManager();
    }
}

Получаем клиент из ядра симфони:

    protected function getUnauthedClient(): KernelBrowser
    {
        $client = $this->functionalTester->grabService('kernel')->getContainer()->get('test.client');
        $client->catchExceptions(false); // выключаем перехват исключений
        return $client;
    }

-- можно выставить какие-то опции, если требуется сделать так, чтобы клиент работал от доменного имени отличного от localhost-а, то в config/services.yaml добавим:

parameters:
    test.client.parameters:
        HTTP_HOST: '%env(APP_COOKIE_DOMAIN)%' # с использованием .env, можно и явно задать строку

Как использовать клиент

Через клиент можно слать запросы к API и, таким образом, проводить тестирование.

Другие способы получения клиента

Key Words for FKN + antitotal forum (CS VSU):