liip / LiipFunctionalTestBundle

Some helper classes for writing functional tests in Symfony
http://liip.ch
MIT License
641 stars 182 forks source link

WebTestCase and FixturesTrait define the same property ($containers) #589

Open craigh opened 2 years ago

craigh commented 2 years ago

I am trying to upgrade my app to Symfony 5.3. Previously this worked in 5.2.11 with functional-test-bundle 4.4.0 and test-fixtures-bundle 1.11.2. After upgrading to most recent versions of all, I get the error below:

PHP Fatal error: Liip\FunctionalTestBundle\Test\WebTestCase and Liip\TestFixturesBundle\Test\FixturesTrait define the same property ($containers) in the composition of App\Tests\AbstractFixtureWebTestCase. However, the definition differs and is considered incompatible. Class was composed in /var/www/symfony/tests/AbstractFixtureWebTestCase.php on line 14

This is the same error as #548 but obviously - much more recent versions.

Preconditions

  1. PHP 7.4.22
  2. Symfony 5.3.4
  3. liip/functional-test-bundle 4.4.2
  4. liip/test-fixtures-bundle 1.12.0

Steps to reproduce

namespace App\Tests;

use Liip\FunctionalTestBundle\Test\WebTestCase;
use Liip\TestFixturesBundle\Test\FixturesTrait;

abstract class AbstractFixtureWebTestCase extends WebTestCase
{
    use FixturesTrait;

Expected result

  1. these two bundles should work together as before

Actual result

PHP Fatal error: Liip\FunctionalTestBundle\Test\WebTestCase and Liip\TestFixturesBundle\Test\FixturesTrait define the same property ($containers) in the composition of App\Tests\AbstractFixtureWebTestCase. However, the definition differs and is considered incompatible. Class was composed in /var/www/symfony/tests/AbstractFixtureWebTestCase.php on line 14

craigh commented 2 years ago

also upgraded in this process:

alexislefebvre commented 2 years ago

Please try with LiipTestFixturesBundle 2 : composer require --dev liip/test-fixtures-bundle:^2.0.0-RC1 The upgrade guide is here.

craigh commented 2 years ago

I have upgraded to 2.0.0-RC1 and changed my code and it seems to work.

Although - I'm not sure upgrading is an actual solution for the existing versions.

Trying to reach you on slack. thanks

alexislefebvre commented 2 years ago

LiipTestFixturesBundle v1 uses a trait, which cause conflicts with the test bundle. LiipTestFixturesBundle v2 doesn't use a trait, it's easier to use both bundles. So yes it doesn't fix the issue on current version but it will avoid it in the long run.