Я слежу за этим блогом, чтобы создавать модульные тесты, использующие мои приборы данных в качестве базы. Соответствующий код:
namespace Tests\AppBundle\Repository;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\StringInput;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class DataFixtureTestCase extends WebTestCase
{
protected $client, $container, $em;
protected static $application;
/**
* {@inheritdoc}
*/
protected function setUp()
{
self::runCommand('doctrine:schema:drop --force');
self::runCommand('doctrine:schema:create');
self::runCommand('doctrine:fixtures:load --append --no-interaction --force');
$this->client = static::createClient();
$this->container = $this->client->getContainer();
$this->em = $this->container->get('doctrine')->getManager();
}
protected static function runCommand($command)
{
$command = sprintf('%s --quiet', $command);
try {
return self::getApplication()->run(new StringInput($command));
} catch(\Exception $e) {
echo $e->getMessage();
}
}
protected static function getApplication()
{
if (null === self::$application) {
$client = static::createClient();
self::$application = new Application($client->getKernel());
self::$application->setAutoExit(false);
}
return self::$application;
}
// other methods not relevant to the question
Мои классы модульных тестов расширяют DataFixtureTestCase
. Когда вызывается setUp()
, я продолжаю получать такие ошибки, как:
В пространстве имен «doctrine:schema» не определены команды.
Любые идеи о том, что вызывает это? Мои исследования не выявили причину ошибки. Doctrine правильно устанавливается через Composer, и я могу запускать консольные команды вручную в терминале.
parent::setUp();
, я полагаю, вам не следует этого делать - person Tarun Lalwani   schedule 23.02.2018