Symfony-docs: Multiple clients in user test is deprecated, still present in documentation

Created on 9 Jan 2020  ·  5Comments  ·  Source: symfony/symfony-docs

Symfony version(s) affected: 4.4.0

Description
After upgrading to Symfony 4.4.0 I got the following deprecation warning:
Calling "Symfony\Bundle\FrameworkBundleTest\WebTestCase::createClient()" while a kernel has been booted is deprecated since Symfony 4.4 and will throw in 5.0, ensure the kernel is shut down before calling the method.

However, I do the same as in the documentation (https://symfony.com/doc/current/testing/insulating_clients.html), this also gives the same deprecation warning. There is no clear alternative, is the documentation outdated or is this a bug?

How to reproduce

class PagesTestCase extends WebTestCase {
     ...
     public function setUp(): void {
        parent::setUp();
        ...
        // Create clients
        self::$anonymousClient = self::createClient(array(), array(
            'HTTPS' => true,
        ));
        self::$userClient = self::createClient(array(), array(
            'PHP_AUTH_USER' => self::get('anonymous')->getUsername(),
            'PHP_AUTH_PW' => '***',
            'HTTPS' => true,
        ));
        self::$adminClient = self::createClient(array(), array(
            'PHP_AUTH_USER' => self::get('testuser')->getUsername(),
            'PHP_AUTH_PW' => '***',
            'HTTPS' => true,
        ));
Testing

Most helpful comment

You need to shutdown the kernel. WebTestCase extends KernelTestCase, which provides a static method self::ensureKernelShutdown().

Call this before creating the clients.

This is indeed still missing from the documentation.

From stack

All 5 comments

You need to shutdown the kernel. WebTestCase extends KernelTestCase, which provides a static method self::ensureKernelShutdown().

Call this before creating the clients.

This is indeed still missing from the documentation.

From stack

@Voetloos FYI, I have moved the issue to the documentation repository as it seems that the changes need to be done there.

ok fine, i want to start transacion before each test and then rollback on tearDown, it also described in Symfony docs - "use DAMA\DoctrineTestBundle\PHPUnit\PHPUnitExtension }" but this extension loads kernel of couse.
So currently it is impossible to use transactions and use client to make tests, have to write own Guzzle client, but it is not good because requires real http server which could be hard in CI testing

Doesn't it make sense to reuse kernel instead of shutdown?

Client (KernelBrowser) can be created only when there is no
Kernel(deprecation notice) ORM transaction can be done only when Kernel is
loaded so it is incompatible requirements and impossible to use built in
Client for REST API testing with resetting DB state each time(In tearDown
method) with transaction. I can’t believe that is Symfony 5 has no good way
to test API...

пн, 8 июня 2020 г. в 06:11, bravik notifications@github.com:

Doesn't it make sense to reuse kernel instead of shutdown?


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/symfony/symfony-docs/issues/12961#issuecomment-640337689,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABQIAKKQ5P3WNIQXACAHVBLRVRJFDANCNFSM4KJBNKKQ
.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

javiereguiluz picture javiereguiluz  ·  3Comments

Kwadz picture Kwadz  ·  3Comments

weaverryan picture weaverryan  ·  3Comments

steevanb picture steevanb  ·  4Comments

samjarrett picture samjarrett  ·  4Comments