Composer require-dev需要不同包中的依赖项require-dev

myo*_*yol 6 php composer-php

我有一些命名空间被在包A中使用自动加载的测试

"autoload-dev": {
    "psr-4": {
        "Vendor\\PackageA\\PhpUnit\\": "tests/PhpUnit"
    }
},
Run Code Online (Sandbox Code Playgroud)

这很好用.

我有另一个包,包B也有命名空间测试,需要在包A中进行一个命名空间测试

"autoload-dev": {
    "psr-4": {
        "Vendor\\PackageB\\PhpUnit\\": "tests/PhpUnit"
    }
},
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在包B中包含该文件时,找不到该类

use Vendor\PackageA\PhpUnit\MyTestFromA;

class MyTestFromB extends MyTestFromA
{
Run Code Online (Sandbox Code Playgroud)

让我觉得其他软件包中的autoload-dev东西没有被加载.

PHP致命错误:第3行的/full/path/to/PackageBClass.php中找不到类'Vendor\PackageA\PhpUnit\MyTestFromA'

当我尝试autoload从包B而不是导入使用自动加载的文件时autoload-dev,我没有得到任何错误.

我怎么能克服这个?

我的一部分是考虑为测试制作一个包,并在两者中自动加载,autoload-dev但我想先确认.

Grz*_*jda 7

解决方案:Composer autoload-dev不起作用.

看看文档.它说:"autoload-dev (仅限root) ".root只表示它只适用于root包.当您包含该包时,显示的composer.json文件不是根包,autoload-dev因此忽略该部分.