WordPress でもPHPUnit で単体テストを行いたい。
wp-cli をインストールする
1 | $ sudo curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar |
プラグインのテンプレートを作成する
1 | $ sudo wp --allow-root scaffold plugin sample-plugin |
wp-cli を管理者権限で実行するときは、–allow-root オプションを付与して実行する。
作成されるファイル
1 | +- bin |
コマンド
テスト実行環境の設定を指定する。
1 | $sudo bin/install-wp-tests.sh <db-name> <db-user> <db-pass> [db-host] [wp-version] [skip-database-creation] |
実際には以下のように指定する。
1 | $sudo bin/install-wp-tests.sh wordpress_test wp_user wp_password localhost latest true |
latest と true/false は省略できる。
テスト環境を作成する
1 | $ bin/install-wp-tests.sh wordpress_test wp_user wp_password |
テスト用コード作成
sample-plugin.php
1 |
|
tests/test-sample.php
1 |
|
テストを実行する
1 | $ sudo phpunit tests/test-sample.php --filter=method |
shortcode をテストする
sample-plugin.php
1 |
|
エラー
テスト環境が作成されていない
現象
PHPUnit を実行すると、下記のエラーが表示される。
1 | $ phpunit |
対策
bin/install-wp-tests.sh を実行してテスト環境を作成する。
1 | $ bin/install-wp-tests.sh |
テスト環境の作成中にエラーが発生する(1) †
現象
1 | svn: command not found |
対応
Subvrsion をインストールする
1 | $ sudo apt install subversion |
テスト環境の作成中にエラーが発生する(2) †
現象
1 | + mysqladmin create wordpress_01 --user=wp_user --password=wppassword --host=localhost --protocol=tcp |
対応
bin/install-wp-tests.sh コマンドで指定したテスト用データベースがすでに作成済みなので、別のデータベースを指定する。
テスト環境の作成中にエラーが発生する(2)
現象
1 | + mysqladmin create wordpress_test_01 --user=wp_user --password=wppassword --host=localhost --protocol=tcp |
対応
bin/install-wp-tests.sh コマンドで指定したテスト用データベースに指定したユーザ名とパスワードでアクセスできないので、アクセス制限を確認する。