[CakePHP]CakePHP ShellをUnitTestでテストする方法

CakePHP

CakePHP ShellをUnitTestでテストする方法を探してもあまり情報が無かったのでメモ書き。

ポイントとしては
\app\Test\Case\Console\Command
というフォルダを作ります。
HogeShell.phpのテストソースを作る場合
\app\Test\Case\Console\Command\HogeShellTest.php
という名前で中身のテンプレートとしては

< ?php
App::uses('ConsoleOutput', 'Console');
App::uses('ShellDispatcher', 'Console');
App::uses('Shell', 'Console');
App::uses('Folder', 'Utility');
App::uses('HogeShell', 'Console/Command');

class HogeShellTest extends CakeTestCase {
	public $target;
	public function setUp() {
		parent::setUp();

		$output = $this->getMock('ConsoleOutput', array(), array(), '', false);
		$error = $this->getMock('ConsoleOutput', array(), array(), '', false);
		$in = $this->getMock('ConsoleInput', array(), array(), '', false);
		$this->target = new HogeShell($output, $error, $in);
		$this->target->initialize();
	}

	public function tearDown() {
		parent::tearDown();
	}
	
	public function testCommon(){
//ここにテストを書く
	}
}

こんな感じです。後はコントローラーやモデルでの書き方と同じでOKのようです。

起動方法は

./app/Console/cake test app Console/Command/HogeShell

問う感じで指定すればいいようです。

タイトルとURLをコピーしました