Почему этот метод выполняется без вызова?

Согласно этой документации, я могу написать setUp() функция в моем тестовом классе, как:

use Doctrine\ORM\Tools\SchemaTool;
use Liip\FunctionalTestBundle\Test\WebTestCase;

class AccountControllerTest extends WebTestCase
{
    public function setUp()
    {
        $em = $this->getContainer()->get('doctrine')->getManager();
        if (!isset($metadatas)) {
            $metadatas = $em->getMetadataFactory()->getAllMetadata();
        }
        $schemaTool = new SchemaTool($em);
        $schemaTool->dropDatabase();
        if (!empty($metadatas)) {
            $schemaTool->createSchema($metadatas);
        }
        $this->postFixtureSetup();

        $fixtures = array(
            'Acme\MyBundle\DataFixtures\ORM\LoadUserData',
        );
        $this->loadFixtures($fixtures);
    }
//...
}

Но когда я ищу setUp() метод в расширенном классе WebTestCase, я не нахожу его. Насколько я понимаю, я могу переопределить метод из родительского класса в дочернем классе. Родительский класс:

https://github.com/liip/LiipFunctionalTestBundle/blob/master/Test/WebTestCase.php

Пожалуйста, объясните мне, почему и когда этот метод выполняется? Спасибо

1 ответ

Решение

setUp() фактически используется PHPUnit, который расширяет среду тестирования Symfony.

Посмотрите документацию по PHPUnit для получения дополнительной информации: https://phpunit.de/manual/current/en/fixtures.html

Вот ссылка на реальный абстрактный класс, который расширяет Symfony: https://github.com/sebastianbergmann/phpunit/blob/master/src/Framework/TestCase.php

Другие вопросы по тегам