私はSymfonyのコンソールコンポーネントで遊んでいますが、テストに関しては問題があります。端末の幅が異なる場合にコンソールコマンドの出力をテストする方法は?
実行された操作に応じて、いくつかのファイルを移動してメッセージを表示できるコマンドがあります。私はSymfonyStyleを使って出力をフォーマットしています。
私はCommandTesterを使用してコマンドをテストしていますが、コマンドが何かをしたかどうかをテストできるかどうかは、出力をテストする効率的な方法を見つけることができません。ここで
は私がやろうとしているものです:
<?php
public function testIgnoreSamples()
{
$container = $this->application->getContainer();
$container['config'] = [
'source_directory' => vfsStream::url('Episodes/From'),
'target_directory' => vfsStream::url('Episodes/To'),
'ignore_if_nuked' => false,
'delete_nuked' => false,
'search_subtitles' => false,
'prefer_move_over_copy' => false
];
copy(
__DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'Fixtures/breakdance.mp4',
vfsStream::url('Episodes/From/sample-angie.tribeca.s01e07.720p.hdtv.x264-killers.mkv')
);
$commandTester = new CommandTester($this->application->find('episodes:move'));
$commandTester->execute([]);
$this->assertContains('because it\'s a sample', $commandTester->getDisplay());
$this->assertEquals([], vfsStream::inspect(new vfsStreamStructureVisitor())->getStructure()['Episodes']['To'], 'Target directory is empty');
}
ここでの問題は、それが難しいのテストを書くことができた、コンソールのサイズに応じて、私の出力は、1本のまたは2つのライン上に表示することができるということです異なる環境で実行することができます。
は、私の環境では例えば、それはこのように表示されます:このような
とでトラヴィス:
ブレーキのテスト。
コンポーネントがこのケースの回避策を提供しているかどうか知っていますか?
最初の場所でのテスト方法を実際に理解しているので、「端末の幅が異なる場合にコンソールコマンド出力をテストするにはどうすればよいですか? – cilefen
こんにちはジョナグ。 @cilefenの答えは実際にあなたの質問に答えましたか?それともあなたはまだ助けが必要ですか? –
@ cilefenの答えは、コマンドの動作を変更することを意味しているので、誰かがアイディアを持っていれば、より良い解決策を探しています。 – Jonag