Composer require-dev требующие зависимости в различных пакетах require-dev
У меня есть некоторые тесты, которые находятся в пространстве имен и загружаются автоматически в пакете A с помощью
"autoload-dev": {
"psr-4": {
"Vendor\PackageA\PhpUnit\": "tests/PhpUnit"
}
},
Это прекрасно работает.
У меня есть другой пакет, пакет B, который также имеет тесты пространства имен, требующие одного из тестов пространства имен в пакете A
"autoload-dev": {
"psr-4": {
"Vendor\PackageB\PhpUnit\": "tests/PhpUnit"
}
},
Однако, когда я пытаюсь включить файл в пакет B, класс не найден
use VendorPackageAPhpUnitMyTestFromA;
class MyTestFromB extends MyTestFromA
{
Заставляя меня думать, что материал autoload-dev из других пакетов не загружается.
PHP фатальная ошибка: класс Поставщикапакетотель расположенс PHPUnitMyTestFromA' не найден в /полный/путь/к/PackageBClass.php on line 3
Когда я пытаюсь импортировать файл, который загружается автоматически с помощью autoload
из пакета B, а не autoload-dev
, я не получаю ошибки.
Как я могу преодолеть это?
Часть меня думает сделать пакет только для тестов и загрузить его в обоих без autoload-dev
, но я хочу сначала подтвердить.
1 ответ:
Решение: Composer autoload-dev не работает .
Взгляните на документы. Он говорит:"autoload-dev (только root)". root only означает, что он применяется только к корневому пакету. Поскольку вы включили пакет, показанный файл
composer.json
не является корневым пакетом, и поэтому разделautoload-dev
игнорируется.