1

Согласно this documentation, я могу написать 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

https://github.com/sebastianbergmann/phpunit/blob /master/src/Framework/TestCase.php#L2210 Прошел через все классы. Здесь и возникает метод. –

+0

@E_p, большое спасибо, я понимаю. –

ответ

2

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

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

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

+1

Кроме того, при расширении класса вы не ограничены переопределением существующих методов. Вы можете добавлять совершенно новые методы, которые затем могут быть вызваны путем потребления кода по дороге. –

+0

Благодарим вас за информативный отзыв. Теперь я полностью понимаю. Я забыл, что PHPUnit входит в качестве встроенной части стандартной версии Symfony2. Я думал, что это связано с липфофункциональным множеством. Глупая ошибка. –

Смежные вопросы