2013年05月24日

CakePHP 2.3のシェルのユニットテスト

最近、CakePHP 2.3を使用していますが、シェルのユニットテストができないかと調べてみました。

ネットで調べると以下の記事が見つかりますが、これはCakePHP 2.3では上手くいきませんでした。
CakePHPシェルの単体テストのやり方

そのため、上記を参考に、CakePHP本体にある、ShellTest.php を調べてみました。
  lib/Cake/Test/Case/Console/ShellTest.php




その結果、以下のサンプルで、シェルのテストができました。
<?php
App::uses('ConsoleOutput', 'Console');
App::uses('ShellDispatcher', 'Console');
App::uses('Shell', 'Console');
App::uses('Folder', 'Utility');
App::uses('HelloShell', 'Console/Command');

// app/Test/Case/Console/Command/HelloShellTest.php
class HelloShellTest 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 HelloShell($output, $error, $in);
$this->target->initialize();
}

public function tearDown() {

}

public function testConstruct() {
$this->assertEquals('Hello', $this->target->name);
}
}

テストに使用したシェルは以下になります。
<?php
// app/Console/Command/HelloShell.php
App::uses('AppShell', 'Console/Command');

class HelloShell extends AppShell {
public function main() {
$this->out('Hello Shell');
}
}

まだ、オプションの渡し方や、標準出力のテストのやり方を調べていませんので、時間ができたときに調べてみたいと思います。
posted by jun1 at 08:33| Comment(3) | TrackBack(0) | ソフト
この記事へのコメント
Hey, thanks for the blog article.Really looking forward to read more. Will read on…
Posted by ralph lauren pas cher at 2013年06月26日 08:55
I have no idea how you do this but I’m completely fond of this blog.
Posted by gift ideas at 2013年07月25日 05:31
I like the worthwhile info you supply within your posts.I’ll bookmark your blog and investigate yet again listed here recurrently.I’m quite convinced I will be taught quite a bit of recent stuff perfect right here! Excellent luck for the subsequent!
Posted by maillot su猫de ibrahimovic at 2013年08月16日 04:29
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/68249888

この記事へのトラックバック