Allied ArchitectsAllied ArchitectsEngineer Blog

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

2012/08/2 PHP

ご挨拶

ご無沙汰しております。前回は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が返ってきています。とりあえず、これだけ分かっていればあとはリファレンス見つつ、頭捻ればテストを書き始められそうです。次回までには、もうちょっと使い倒して詳細にブレイクダウンしてみようと思います。

ishida
  • ishida
  • アーキテクト
  • なるべく他のメンバーは書かないであろう流行りとは程遠いところや、 枯れたキーワードについて書いていこうと思います。 Perl / Java / PHP 及び周辺技術に興味があります。

RELATION ENTRY

ポケモンでOOPしていく(その3)(Advent Calendar 25日目)

ポケモンでOOPしていく(その3)(Ad...

2014/12/25 PHP

挨拶 メリークリスマス! Adevent Calendarの最終日です。ポケモントレーナーの石田です。 僕はクリスチャンではありませんが、アドベントカレンダーのラストを飾ることになってしまいました。そんな僕ですが、クリスマス・イヴのイヴはeveningで、アダムとイヴのイヴとは関係ありませんので...

続きを読む

Inside of Allied Architects(Advent Calendar3日目)

Inside of Allied Arc...

2014/12/3 開発基盤

挨拶 アドベントカレンダー3日目を担当するポケモントレーナーの石田です。ORAS発売されましたね!皆さんは、もうチュートリアルも終わって厳選態勢に入っているのではないかと思いますが、僕は諸々あって厳選態勢には一歩出遅れている状態です。いっそ、なりふり構わずORASで捕まえたポケモンを環境の整ってい...

続きを読む

ishidaの記事一覧へ

ページTOPへ