PHPUnit によるユニットテストを WordPress テーマ開発に簡単に導入する

mimizuku

Mimizuku Advent Calendar 15日目の記事です。ナチュラルに更新をサボってしまっていて現在18日ですが、時間がとれたのでとりあえず更新。

テーマでも PHPUnit によるユニットテストをやりたい

wp-cli にはwp scaffold plugin-testsというコマンドがあり、これを実行すると任意のプラグインのディレクトリに PHPUnit を実行するための環境(ファイル群)が用意されます。WordPress はどうしてもデータベースと密接に絡んでテストしないといけない部分がでてくるので、ここで用意される PHPUnit はテスト用の WordPress を一時的に立ち上げたりとか、投稿を自動生成したりするコマンドとか、そういうものも含まれている超便利なものになっています。

で、これを Mimizuku でもやりたいと思ったのですがコマンドが無かったのです。wp scaffold plugin-testsで生成されるファイルを参考に自分で用意しても良かったのですが、何か大事な変更とかあったときに追従するのがめんどうだなーと思いまして、Mimizuku のディレクトリでwp scaffold plugin-testsを実行してプラグイン用のファイル群を生成し、それをテーマでも実行できるように一部sedコマンドで置換して展開する、という方法をとりました。僕の Mac ではちゃんと動いていますが、Windows とかだとどうなんでしょうね、sedとか動くのでしょうか…

はい、ということで下記のコマンドでユニットテスト用のファイルが生成されます。Mimizuku で直接やっても意味が無いので、Mimizuku Child の中で実行してください。

// ユニットテスト用のファイルを生成
$ composer scaffold-tests

// テストを実行(テスト用の WordPress 環境が無い場合は自動生成、ある場合はそれを使う)
$ composer phpunit

// テストを実行(テスト用の WordPress 環境を必ず生成。既にある場合は消してもう一回作り直す)
$ composer wpphpunit

wp scaffold theme-tests

Mimizuku の composer コマンドを作ったのは確か11月とかそれくらいだったと思いますが、作った直後に「wp-cli の最新バージョンではテーマでもユニットテストができるようにwp scaffold theme-testsというコマンドが追加されるよ」的な情報が流れてきました。いやー、もうちょっと早ければ作らなくてよかったのに…w

作ったものもちゃんと動いててまだわざわざ置き換えなくても良いかなぁということでそのままにしていますが、多分 wp-cli のwp scaffold theme-testsでも同じような感じでテストが実行できるようになるんだと思います。すでにバリバリ使っているよという方がいらっしゃいましたらぜひ Mimizuku のcomposer scaffold theme-testsを wp-cli のwp scaffold theme-testsに置き換えるプルリクください!

  • ブックマーク
  • Feedly

この記事を書いた人

キタジマタカシ

長崎在住、フリーランスのWordPress テーマ / プラグインデベロッパー。 多数のプロダクトをオープンソースで開発・公開しています。現在は WordPress 有料テーマ Snow Monkey を開発・販売しています。