用途 该技能面向 Drupal 模块的纯 PHP 逻辑单元测试,适用于不依赖 Drupal 引导的代码,例如工具函数、数据转换、值对象,以及所有依赖都可被模拟的类。
主要能力 测试基于 Drupal\Tests\UnitTestCase 编写,存放在 tests/src/Unit/ 目录;通过 PHPUnit 的 createMock 生成模拟对象,支持设定返回值、参数匹配、抛出异常、多组返回映射;可使用 UnitTestCase 提供的 getStringTranslationStub() 模拟 t() 翻译,并可模拟 LoggerInterface 以断言日志调用与消息内容。测试类可用 @coversDefaultClass、@covers、@group 等注解标注覆盖范围与分组。
使用方式 示例假定项目采用 docroot/ 作为文档根,若使用 web/ 等其他根目录需相应调整路径。运行方式包括:单文件执行 ddev exec vendor/bin/phpunit <测试文件路径>;整模块执行 ddev exec vendor/bin/phpunit <模块 tests/src/Unit/ 路径>;详细输出 ddev exec vendor/bin/phpunit --verbose <测试目录>。
适用场景 适合验证不触碰 Drupal 容器与数据库的独立逻辑,回归成本低、执行快。
限制 仅适用于无需 Drupal 引导的代码;依赖 Drupal 服务的逻辑应改用内核测试。官方未提供更进一步的收费、平台或性能数据。