(2012/09/03 追記) phpDocumentor2 も入れました。
PHPUnit で vfsStream というものを使うと ファイルシステムのモック なんてことが出来るらしいので入れてみました。
最初に このページ の通りにインストールしようとしましたが上手くいきませんでした。「mikey179/vfsStream · GitHub」を見た感じ Composer でインストール出来るようなのでそっちでインストールすることにします。
また、折角なのでついでに PEAR と PHPUnit と phpDocumentor2 も入れなおしました。
はじめに
まず前提として、私は以下のようなディレクトリ構造で環境変数 PATH の定義によってどちらのバージョンを使うかを切り替えるようにしています。PEAR はバージョンで共通でも(多分)大丈夫なので、1 つだけインストールするようにします*1。
D:\app\php-5.3.3 D:\app\php-5.3.16 D:\app\php-pear
go-pear の実行
Windows で pear を使えるようにするためには go-pear というものを実行します。が、その前に次のように環境変数を設定しておきます。
名前 | 値 |
---|---|
PHP_PEAR_BIN_DIR | D:\app\php-pear |
PHP_PEAR_SYSCONF_DIR | D:\app\php-pear |
PHPBIN | php |
- PHP_PEAR_BIN_DIR
- phpdoc の実行に必要だったので・・・
- PHP_PEAR_SYSCONF_DIR
- 無いと Windows フォルダに pear.ini が作成されてしまうので・・・
- PHPBIN
- phpunit で PATH 環境変数で PHP のバージョンを切り替えるため・・・
あ、もちろん PATH に D:\app\php-pear の追加も忘れずにやっておきます(じゃないと phpunit とかの実行が不便)。
次に go-pear を実行します。昔は go-pear.bat というバッチファイルが php の Windows バイナリのアーカイブに含まれていた気がするのですが最近は含まれていないようです。なので http://pear.php.net/go-pear.phar からダウンロードします。
ダウンロードしたファイルは D:\app\php-pear に配置して、次の様に実行します。
cd /d D:\app\php-pear php go-pear.phar
go-pear の 最初のプロンプトはデフォルトのまま Enter します。
Are you installing a system-wide PEAR or a local copy? (system|local) [system] :
次のプロンプトでインストール場所などが表示されます。↓のような感じになっているはずなのでそのまま Enter します。
1. Installation base ($prefix) : D:\app\php-pear 2. Temporary directory for processing : D:\app\php-pear\tmp 3. Temporary directory for downloads : D:\app\php-pear\tmp 4. Binaries directory : D:\app\php-pear 5. PHP code directory ($php_dir) : D:\app\php-pear\pear 6. Documentation directory : D:\app\php-pear\docs 7. Data directory : D:\app\php-pear\data 8. User-modifiable configuration files directory : D:\app\php-pear\cfg 9. Public Web Files directory : D:\app\php-pear\www 10. Tests directory : D:\app\php-pear\tests 11. Name of configuration file : D:\app\php-pear\pear.ini 12. Path to CLI php.exe : D:\app\php-5.3.16
あとは Enter 連打で go-pear を完了させます。最後に次のようなメッセージが表示されて PEAR_ENV.reg の実行が促されます。これは PEAR 用の環境変数を設定するものですが最初に設定した PHP_PEAR_SYSCONF_DIR だけで十分なので無視します。
For convenience, a REG file is available under D:\app\php-pearPEAR_ENV.reg . This file creates ENV variables for the current user.
pear で PHPUnit をインストール
pear をインストールした直後なので、まずは既存パッケージのアップデートを行います。
pear update-channels pear upgrade-all
PHPUnit をインストールします。
pear config-set auto_discover 1 pear install -a pear.phpunit.de/PHPUnit
もしよくわからない変なエラーが出たら↓のようにキャッシュをクリアしてから再実行すると上手くいきます。
pear clear-cache
pear で phpDocumentor2 をインストール
pear コマンドでインストールします。
pear channel-discover pear.phpdoc.org pear install phpdoc/phpDocumentor-alpha
Composer で vfsStream をインストール
Composer は 次の場所にインストールすることにします。なお、msysgit が入ってないと上手くいかないです・・・
D:\local\php-lib\composer\
↑このディレクトリに composer.json という名前で次のようにファイルを作成します。
composer.json
{ "require": { "mikey179/vfsStream": ">=1.0.0" } }
↑このディレクトリ内で次の通りコマンドを実行します。
curl -s http://getcomposer.org/installer | php php composer.phar install
vendor というディレクトリが作成され、その中に色々ダウンロードされます。vfsStream 自体は vendor/mikey179/vfsStream/ に保存されますが、vendor/autoload.php をインクルードするだけで vfsStream は使用できるようになっています。
vfsStream
早速動かしてみましたー!
<?php require_once 'vendor/autoload.php'; use org\bovigo\vfs\vfsStream; class vfsStreamTest extends PHPUnit_Framework_TestCase { private $vfsRoot; private $vfsPath; protected function setUp() { $this->vfsRoot = vfsStream::setup(); $this->vfsPath = vfsStream::url($this->vfsRoot->getName()); } /** * @test */ public function vfsStream_1() { $file = vfsStream::newFile("hoge.txt"); $file->write("hogehoge"); $this->vfsRoot->addChild($file); $this->assertFileExists($this->vfsPath . DIRECTORY_SEPARATOR . "hoge.txt"); $this->assertEquals("hogehoge", file_get_contents($this->vfsPath . DIRECTORY_SEPARATOR . "hoge.txt")); } }