Symfony 4 - PHPUnit - Проблемы с методом setUp () - PullRequest
0 голосов
/ 22 января 2020

Я следую за формированием Symfony Cast Stripe. Они используют Symfony 3, а я использую Symfony 4.

Я пытаюсь сделать некоторый тест, как в формировании: https://symfonycasts.com/screencast/stripe-level2/testing-webhooks#play

Но когда я бегу тест, у меня есть эта ошибка:

Неустранимая ошибка: невозможно повторно объявить статический контейнер Symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase :: $ как не статичный c App \ Tests \ Controller \ WebhookControllerTest :: $ container in C: \ Users \ user \ Desktop \ StripeFormation2 \ tests \ Controller \ WebhookControllerTest. php в строке 11

Я сделал это:

<?php
namespace App\Tests\Controller;

use DateTime;
use App\Entity\User;
use App\Entity\Subscription;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;

class WebhookControllerTest extends WebTestCase
{
    /** @var EntityManagerInterface */
    private $em;
    private $container;

    public function setUp()
    {
        self::bootKernel();
        $this->container = self::$kernel->getContainer();
        $this->em = $this->container->get('doctrine')->getManager();
    }
    // ...

Может кто-нибудь помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 22 января 2020

начиная с symfony 4.0, контейнер уже присутствовал в KernelTestCase, который расширяется WebTestCase. См. git РЕПО . Сравните с git репо .

Итак, в symfony 4 вам не нужно $this->container = self::$kernel->getContainer();, поскольку он уже объявлен как static в KernelTestCase.

Если вам нужно использовать контейнер, вы можете сделать self::$container->get('serviceId');

...