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
に置き換えるプルリクください!