Laravel4でArtisan commandをUnitTestする
March 26, 2014
Laravelでコマンド書いている時に、どうやってテストから実行させるのかでハマったのでメモ
結論
Symfony\Component\Console\Tester\CommandTester
を使う
サンプル
キャッシュを消すコマンドのテストで使ったものの抜粋 executeの引数はコマンドに渡したいパラメータをarrayで渡す
<?php
use Symfony\Component\Console\Tester\CommandTester;
class DeleteCacheCommandTest extends TestCase {
public function testOutput()
{
$tester = new CommandTester(new DeleteCacheCommand);
$tester->execute([]);
$this->assertThat(trim($tester->getDisplay()), $this->equalTo("cache of demo mode was deleted"));
}
}
参考にさせていただいたサイト&本
https://laracasts.com/forum/956-creating-a-phar-like-laravel-envoy-and-testing-it/0
Laravel Testing Decodedは日本語もあるので、日本語が良い方はそちらをどうぞ。 Laravel Testing Decodedは読むたびに、あーこれが知りたかったんだわというのがあって、非常にオススメです。