Appearance
PHPUnit 実行時の OS・PHP 拡張の前提
Issue #1546 / #1706 に基づき、環境依存で markTestSkipped を置かない方針としたテストの前提をまとめる。
mbstring
EmojiTextSanitizerの UTF-8 文字数検証は mbstring 必須。- ルートの
composer.jsonにext-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.phpのfactory( [ ServiceFactory::class, 'create_…' ] )形式は PHP-DI 7 で解決可能である。get( ServiceFactory::class )を配列先頭に置いた旧形式は解決に失敗するため使用しない。