ishida

2012.08.02

PHPのモッキングフレームワーク “Phake” を使ってみる

ご挨拶

ご無沙汰しております。前回はPHP で Hello, Worldしまくっていた石田です。

Phakeってなに?

これですね。
Phake – PHP Mocking Framework

Unitテストをするためのモックを作るためのフレームワークですね。PHP Unitを利用したUnit Testについては手前味噌ではありますが、Qiitaに書いたPHPUnitの使い方まとめと、このブログ内の伊藤さんの各記事が参考になると思います。PHPUnit付属のモックはとても便利なのですが「痒いところまで絶妙に手が届かない」感じで、ちょっと悩ましかったので「もっと良いモック」は無いものか…… と色々試そうとしているところなのです。

インストール

git cloneでいけます

早速、コードを書いてみましょう。パスを通さないとイケないみたいですね。

という感じで、無いメソッドは普通にやるとコケてくれるみたいですね。素直なクラス設計をしている人には嬉しい仕様ではないでしょうか。__set, __get は 動いてくれない模様です。PHPUnitのモックもそうですが、できれば__set, __getはオーバーライドして欲しくなかったのですが、ここは潰してくれた方が嬉しい人も多いのかも知れないですし文句は言えませんね。さて、では、__call が有るとどうなんでしょう?

無いメソッド呼んでも死ななくなっちゃいましたね。動的にプロパティを定義してアクセスするようなクラスでは、__callを利用して setter, getter っぽくアクセスするようにすれば良いのですかね。と、ここまで考えて、ふと思いついて以下を試してみました

おお、期待通り! でも、出来たけど直感的ではないですね。

定義していない引数で渡すとNULLが返ってきています。とりあえず、これだけ分かっていればあとはリファレンス見つつ、頭捻ればテストを書き始められそうです。次回までには、もうちょっと使い倒して詳細にブレイクダウンしてみようと思います。