【发布时间】:2023-03-29 10:22:01
【问题描述】:
考虑以下项目布局:
/lib/
Folders/For/Namespaces/SomeClass.php
/test/
Folders/For/Namespaces/SomeClassTest.php
composer.json
这段摘自composer.json:
"autoload": {
"psr-4": {
"MyNamespace\\" : "lib/"
}
},
"scripts": {
"test": "phpunit --bootstrap vendor/autoload.php tests"
}
这让我可以运行composer test,它将执行SomeClassTest.php等等,而\MyNamespace\Folders\For\Namespaces\SomeClass被自动加载器找到。
虽然在构建抽象测试用例时,我无法让自动加载工作:
/test/
Folders/For/Namespaces/SomeClassTest.php
AbstractTest.php
此处\MyNamespace\Folders\For\Namespaces\SomeClassTest 扩展了\MyNamespace\AbstractTest,但自动加载器找不到。原因很明显,因为在composer.json 中,test/ 目录没有链接到命名空间。但是我怎样才能做到这一点呢?
我尝试将\MyNamespace\AbstractTest 移动到\MyNamespace\Test\AbstractTest 并将这个命名空间添加到composer.json,如下所示:
"autoload": {
"psr-4": {
"MyNamespace\\" : "lib/",
"MyNamespace\\Test\\" : "test/"
}
},
但这并没有帮助。我该怎么办?
【问题讨论】:
标签: phpunit composer-php