PHP用モッキングフレームワーク『Mockery』を使ってみた

PHP用モッキングフレームワーク『Mockery』を使ってみた
■ 店頭より得で、予約しやすいオンラインショップ。
 → ドコモオンラインショップ
 → auオンラインショップ
 → ソフトバンクオンラインショップ

最新のiPhoneを得して乗り換えるなら、最大6万円のキャッシュバックがある
→ SMARTPHONE STORE

私は主にPHPで開発を行っており、ユニットテストも書いています。
クラスのスタティックメソッドをモック化する必要に迫られたのですが、そこでたどり着いたのが『Mockery』の存在。
<参照:GitHub『Mockery』>

GitHub内に記載されたドキュメントを見る限りでは、スタティックメソッドのモック化もできるとのこと。
まさに私の現在のニーズにピッタリ! ……ということで、さっそく使ってみることにしました。

『Mockery』の良さそうなところ

使う前ではありますが、『Mockery』の期待できそうな点が以下の通り。

  • スタティックメソッドがモック化できる(今回の最大の目的!)
  • テスト対象のメソッド内でnewされるクラスもモックにできる
  • シンプルな記述で簡単に使えそう(何気に重要!)

期待値ばかりが異様に高まってしまいましたが、さっそくインストールしてみましょう。

インストール方法はいくつかあるようですが、Composerでさくっと実行しちゃいましょう。
「composer.json」に下記を追加し、「composer update」でインストール。

※「PHPUnit」は既にインストール済みの環境

あとは、テストファイルでRequireするなり、ComposerのAutoloadを使うなりして読み込んでしまえば準備完了です。

さっそく『Mockery』を使ってみた

今回の目的である、クラスメソッド中の「MathClass」のスタティックメソッドでインスタンスを取得しています。
さっそくこれをモック化するテストコードを書いてみましょう。

■最新のiPhoneの購入・機種変更なら店頭より得で、予約しやすいオンラインショップ。
機種の頭金や使わないオプションパックをつけて年間何万円も損していませんか?
オンラインショップなら故障のサポートもしっかりしていて最低限の費用。待たされることもありません。
 → ドコモオンラインショップ
 → auオンラインショップ
 → ソフトバンクオンラインショップ

最新のiPhoneを得して乗り換えるなら、最大6万円のキャッシュバックがある
→ SMARTPHONE STORE
がお得です。