Symfony 2テストケースからコンソールコマンドを実行する方法はありますか?私はスキーマの作成と削除のためのdoctrineコマンドを実行したい。Symfony 2テストケースからコンソールコマンドを実行
答えて
ドキュメントは、既存のコマンドを呼び出すの適切symfonyの2方法を反映するために私の最後の答え以降に更新されました:
http://symfony.com/doc/current/components/console/introduction.html#calling-an-existing-command
ディレクトリ構造が
/symfony
/app
/src
のように見える場合は、[はい、あなたはあなたが
passthru("php app/console [...]") (http://php.net/manual/en/function.passthru.php)
exec("php app/console [...]") (http://www.php.net/manual/en/function.exec.php)
のいずれかを使用してPHPのコマンドを実行することができ、あなたのユニットテストから
phpunit -c app/phpunit.xml.dist
を実行します
を入力するか、またはコマンドをバックティックに置くことによって
php app/consode [...]
あなたはsymofny以外のディレクトリからのユニットテストを実行している場合、あなたはそれを動作させるためのアプリケーションディレクトリへの相対パスを調整する必要があります。
// the document root should be the web folder
$root = $_SERVER['DOCUMENT_ROOT'];
passthru("php $root/../app/console [...]");
アプリケーション内部から実行する方法はありませんか?私は完全に分離したテストを作成しようとしています。 – vinnylinux
また、特定の環境(テスト)でコマンドを実行したい。 – vinnylinux
はい、そのコードをモデルやエンティティに入れることができますが、appへのパスを取得するには '$ _SERVER ['DOCUMENT_ROOT'];'を使用する必要があります。私の答えを編集します – ContextSwitch
このアプリからそれを実行する
documentation chapterは、異なる場所からコマンドを実行する方法を説明しています。
オプション1
use Symfony\Bundle\FrameworkBundle\Console\Application as App;
use Symfony\Component\Console\Tester\CommandTester;
class YourTest extends WebTestCase
{
public function setUp()
{
$kernel = $this->createKernel();
$kernel->boot();
$application = new App($kernel);
$application->add(new YourCommand());
$command = $application->find('your:command:name');
$commandTester = new CommandTester($command);
$commandTester->execute(array('command' => $command->getName()));
}
}
:あなたのニーズに合わせてexec()
を使用すると、非常に汚いソリューションです... Symfony2の中にコンソールコマンドを実行する
正しい方法は以下の通りであることに留意し、オプション2
use Symfony\Component\Console\Input\StringInput;
use Symfony\Bundle\FrameworkBundle\Console\Application;
class YourClass extends WebTestCase
{
protected static $application;
public function setUp()
{
self::runCommand('your:command:name');
// you can also specify an environment:
// self::runCommand('your:command:name --env=test');
}
protected static function runCommand($command)
{
$command = sprintf('%s --quiet', $command);
return self::getApplication()->run(new StringInput($command));
}
protected static function getApplication()
{
if (null === self::$application) {
$client = static::createClient();
self::$application = new Application($client->getKernel());
self::$application->setAutoExit(false);
}
return self::$application;
}
}
P.S.みんな、symfony2に電話して恥ずかしくないよ。exec()
...
これは、公式のSymfony2ドキュメントの「テストコマンド」で述べた正しい答えです。http://symfony.com/doc/current/components/console/introduction.html#testing-commands –
また、質問はコマンドのテストについて... – Moonchild
@FrancescoCasulaのリンクが壊れています - 新しい場所:http://symfony.com/doc/current/console.html#testing-commands –
docsはあなたにそれをする方法を教えてくれます。以下のサンプルコードは貼り付けられています。
protected function execute(InputInterface $input, OutputInterface $output)
{
$command = $this->getApplication()->find('demo:greet');
$arguments = array(
'command' => 'demo:greet',
'name' => 'Fabien',
'--yell' => true,
);
$input = new ArrayInput($arguments);
$returnCode = $command->run($input, $output);
// ...
}
- 1. symfony - kernel.terminateでコンソールコマンドを実行
- 2. コマンド内から複数のSymfonyコンソールコマンドを実行する
- 3. Symfony - コンソールコマンドがコントローラから実行されたのか、ターミナルから実行されたのかを知る方法?
- 4. Zend Framework 2のコントローラからコンソールコマンドを実行する方法は?
- 5. Symfonyコンソールコマンドbehat test
- 6. ラリーからテストケースを実行
- 7. Excelからテストケースを実行
- 8. コントローラからsudoを使ってsymfonyコンソールコマンドを呼び出す
- 9. Android Espresso:第2アクティビティでテストケースを実行
- 10. Symfony 2カスタムデータベースを作成するためのコンソールコマンド
- 11. symfony 2.xでコンソールコマンドのタイマーを設定するには?
- 12. Symfony 2コンソールコマンドでエンティティとエンティティマネージャを使用するには?
- 13. Yii2:ベンダーのディレクトリにあるコントローラーからコンソールコマンドを実行
- 14. コンソールコマンドの出力をコードから実行できない
- 15. コントローラからコンソールコマンドを実行しているSymfony3コンソール
- 16. テストケースが2回実行されない
- 17. コンソールコマンドからLaravel Run関数
- 18. IntelliJ Plugin - コンソールコマンドを実行する
- 19. コンソールコマンドを実行できません
- 20. SymfonyコマンドからLinuxコマンドを実行
- 21. symfonyプロセス - サービスからコマンドを実行
- 22. テストケースを実行して別のテストケースからsoapuiテストケースへの引数を渡す方法
- 23. JUnit - Webアプリケーションからテストケースを実行する
- 24. Robotframework-実行からのテストケースを除外する
- 25. テストIDでExcelからalmのテストケースを実行する
- 26. 複数のクラスファイル(Robotium)からjunitテストケースを実行
- 27. jarからテストケースを実行するには
- 28. ロボットフレームワークのコマンドプロンプトからテストケースのセットを実行する方法
- 29. Pythonノーズテストから複数のテストケースを実行するには
- 30. コマンドプロンプトからNUnitテストケースを実行する方法
感謝のように働いた、ありがとう。 – vinnylinux
これは真実ではありませんsymfony way –
ouptutを正しく解析できないので、それは良い方法ではありません。また、環境に問題が発生する可能性があります(phpがテストを実行しているユーザーのパスにない場合はどうなりますか?)。 – Sgoettschkes