В соответствии с эта документация, Я могу написать 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
Пожалуйста, объясните мне, почему и когда этот метод выполняется? Спасибо
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
Других решений пока нет …