更新composer.json后找不到PHPUnit特性

时间:2018-10-25 09:09:36

标签: symfony composer-php phpunit

原始composer.json

{('B', '3'), ('C', 3), ('A', '2'), ('C', 2)}

New composer.json

"autoload": {
    "psr-4": { "": "src/" },
    "classmap": [ "app/AppKernel.php", "app/AppCache.php" ],
    "exclude-from-classmap": [ "/tests/" ]
},
"autoload-dev": {
    "psr-4": { "tests\\": "tests/" }
}

我的特征在"autoload": { "psr-4": { "AppBundle\\": "src/AppBundle", "TOTO\\": "src/TOTO" }, "classmap": [ "app/AppKernel.php", "app/AppCache.php" ], "exclude-from-classmap": [ "/tests/" ] }, "autoload-dev": { "psr-4": { "Tests\\": "tests/" }, "files": [ "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php" ] }, 中定义,并被其他测试(例如tests\TOTO\Services\InvokeMethodTrait)调用,因为为优化自动加载器而进行的更改使我得到了tests\TOTO\Services\ConversationServiceTest。之前它运行正常,并且在相关类中我没有进行任何更改。

有什么主意吗?

1 个答案:

答案 0 :(得分:1)

composer.json的原始部分具有:

"psr-4": { "tests\\": "tests/" }

和新的:

"psr-4": {
    "Tests\\": "tests/"
}

可以看到tests命名空间的大小写有所变化。对于PHP(自然)而言,这不是问题,因为名称空间和类不区分大小写(有关PHP区分大小写https://stackoverflow.com/a/33273959/5264262的总结,是一个很好的答案)。但是,作曲家的自动加载器会以字符串形式接收该未知的类名称,并将所有完全限定的类名称解析为文件require的某些路径,因此该过程区分大小写。在https://github.com/composer/composer/issues/2767上有关该主题的未解决问题进行了一些讨论。

最后一点是:我们在composer.json中的名称空间和类命名应区分大小写。