あけましておめでとうございます。本年もよろしくお願いします(遅い)。
今年最初の記事は、PHPのマイクロフレームワーク Slim についてです。
Slimは簡単なウェブアプリケーションを作るのに便利なのですが、テスト機能はありません。
内輪だけで使って、すぐ捨てる前提のサイトならこれでもいいかもしれませんが、ある程度継続して使うなら、テストはあったほうがいいと思います。
公式に用意されている codeguy/Slim-Skeleton をベースに、PHPUnit + Goutte でテストできるようにしたスケルトンを作りました。ソースコードは以下にあります。
Packagist にも登録したので、このコマンドでプロジェクトを作れます:
php composer.phar create-project ryu22e/slim-skeleton-phpunit [my-app-name]
テスト実行は以下のコマンドでできます:
make test
テストコードはこんな感じで書けます:
<?php
use Goutte\Client;
class WebTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$this->url = sprintf('http://%s:%s/', WEB_SERVER_HOST, WEB_SERVER_PORT);
}
public function testShowPage()
{
$client = new Client();
$crawler = $client->request('GET', $this->url);
$this->assertEquals(200, $client->getResponse()->getStatus());
}
}
追加・変更したのは以下のファイル・ディレクトリです。
- composer.json →PHPUnit, Goutte を追加。
- phpunit.xml → PHPUnitに渡す設定ファイル。
- tests/ →テストコードやbootstrap.php1 を置くディレクトリ。
- Makefile →
make test
で実行できるようにするためのファイル2 。
テスト実行時にPHPの ビルトインウェブサーバー を呼んでいるのですが、以下の記事が参考になりました。
Using PHP’s built-in web server in your test suites – VG Tech
この作りは特定のフレームワークに依存しないので、フレームワークを使っていない & テストコードがないプロジェクトにテストを追加するときに応用できると思います。ぜひ、お試しください!