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

MW WP Form

MW WP Form はショートコードベースのフォームプラグインです。多くの機能を持っており、例えば、多くのバリデーションルール、問い合わせデータの保存、そしてグラフ機能集計などを使用することができます。

さらに詳しく
Habakiri

Habakiri

Bootstrap ベースのシンプルな WordPress テーマ。レスポンシブ、多くのカスタマイズ機能。圧縮された CSS・JS を使用する高速化対策。Microformats 対応。Sass、クラスベースの functions.php。

さらに詳しく
basis-stylus

Basis

軽量なレスポンシブ Stylus/CSS フレームワーク。Flexbox ベースのグリッドシステム、疎結合なコンポーネント、バーティカルリズム。

さらに詳しく