* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bundle\FrameworkBundle\Test; use Symfony\Bundle\FrameworkBundle\KernelBrowser; use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; /** * WebTestCase is the base class for functional tests. * * @author Fabien Potencier */ abstract class WebTestCase extends KernelTestCase { use WebTestAssertionsTrait; protected function tearDown(): void { parent::tearDown(); self::getClient(null); } /** * Creates a KernelBrowser. * * @param array $options An array of options to pass to the createKernel method * @param array $server An array of server parameters * * @return KernelBrowser A KernelBrowser instance */ protected static function createClient(array $options = [], array $server = []) { if (static::$booted) { throw new \LogicException(sprintf('Booting the kernel before calling "%s()" is not supported, the kernel should only be booted once.', __METHOD__)); } $kernel = static::bootKernel($options); try { $client = $kernel->getContainer()->get('test.client'); } catch (ServiceNotFoundException $e) { if (class_exists(KernelBrowser::class)) { throw new \LogicException('You cannot create the client used in functional tests if the "framework.test" config is not set to true.'); } throw new \LogicException('You cannot create the client used in functional tests if the BrowserKit component is not available. Try running "composer require symfony/browser-kit".'); } $client->setServerParameters($server); return self::getClient($client); } }