Skip to content

PHPUnit 実行時の OS・PHP 拡張の前提

Issue #1546 / #1706 に基づき、環境依存で markTestSkipped を置かない方針としたテストの前提をまとめる。

mbstring

  • EmojiTextSanitizer の UTF-8 文字数検証は mbstring 必須
  • ルートの composer.jsonext-mbstring を宣言している。拡張のない PHP では composer install が依存解決エラーで失敗するため、開発環境でも有効化すること。

シンボリックリンク(BuildManagerAdminPageTest

  • delete_directory_recursive がシンボリックリンクを辿らないことの検証は、一時ディレクトリ上で symlink() を実際に作成する。
  • Linux / macOS では通常そのまま成功する。
  • Windows では権限・「開発者モード」等により symlink() が失敗しうる。その場合は当該テストが失敗する。WSL 上で PHPUnit を実行するか、シンボリックリンク作成が可能な環境を用意すること。

WordPress グローバル関数(Application::boot()

  • ApplicationTest::test_get_instance_returns_booted_instance は別プロセスで Application::boot() を実行する。
  • PathConstants::get_mvc_path() はグローバルの \get_stylesheet_directory() を呼ぶ必要がある(名前空間内の誤解決を避ける)。
  • 未定義の WP 関数は tests/bootstrap.php でスタブする。

PHP-DI 7 と ServiceFactory の factory 定義

  • config/di.phpfactory( [ ServiceFactory::class, 'create_…' ] ) 形式は PHP-DI 7 で解決可能である。get( ServiceFactory::class ) を配列先頭に置いた旧形式は解決に失敗するため使用しない。