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

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

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

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

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

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

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

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

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

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

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

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

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

【週刊bitWave】(メルマガ)始めました!
登録はこちらからメールアドレスを入力してお申込みください。

ご登録いただいたメールアドレスは 【週刊bitWave】の更新情報の配信にのみ使用します。

個人情報の取扱いに関しては、「プライバシーポリシー」をご確認ください。解除はいつでこちらから行うことが可能です。

あなたにおすすめ

仮想環境で『Ansible』を使ってサーバ構築... 最近、サーバ構築を実施する必要がありました。 まずは仮想環境を作り、サーバ構築を……と思ったのですが、私はインフラ周りの経験が浅く、色々困ったことが頻出してしまいました。 今回の記事では、私と同じような “サーバ構築ビギナー” ...
「Puppeteer」+「LINE Notify」でサイトの更新時のみ通知を受け取ってみる... 前回の記事では閲覧数向上が期待できそうなキーワードの「Puppeteer」と「LINE Notify」のそれぞれの解説、およびサイトのサムネイルを通知してみるといった試みを実施してみました。 <bitWave関連記事『「Puppeteer...
Vue.jsで社用登録データフォームを作ってみた... 今回は社内用データ登録フォームを作ろうと思い、初めて「Vue.js」を試してみることにしました。 「Vue.js」は使い方、書き方も簡単で、初心者もすぐ活用できるjsだと思いましたので、この場を借りて共有させていただきます。 なお、...
「Puppeteer」+「LINE Notify」でサイトのサムネイルを通知してみる... 今回は記事閲覧数が期待できそうなキーワードを用いて、ブログを書いてみようかと思います。 そのキーワードとは…… 「Puppeteer」と「LINE Notify」。 「Puppeteer」って何? 「LINE Notify」って...