【发布时间】:2023-03-29 06:59:02
【问题描述】:
我尝试创建自己的库,它有自己的命名空间,因此可以包含在其他项目中。
我已经这样做了,composer install 运行没有错误,但是当我尝试在我的库中运行单元测试时,它没有找到任何用于模拟或直接初始化的类。
我的文件夹结构是这样的:
ProjectFolder
|
\_src
| \_Sap
| \_Classes
|
\_tests
| \_Sap
| \_TestClasses
| bootstrap.php
\_vendor
类中使用的命名空间遵循以下模式:
namespace PuC\Sap;
测试中使用的模式是这样的:
namespace PuC\Sap\Tests\Sap;
我的 composer.json 看起来像这样:
"autoload": {
"psr-4": {
"PuC\\Sap\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"PuC\\Sap\\Tests\\": "tests/"
}
},
在我的测试文件夹中,我添加了一个 bootstrap.php 并在我的 phpunit.xml 文件中引用它:
<?php
$loader = @include __DIR__ . '/../vendor/autoload.php')
$loader->add('Sap', __DIR__);
没有,当我在 bash 中运行时,我得到:
$ bin/phpunit tests/
PHPUnit 8.4.3 by Sebastian Bergmann and contributors.
......
7) PuC\Sap\Tests\Sap\HouseSoapServiceTest::testGetHouseData
Cannot stub or mock class or interface "PuC\Sap\Client\SapSoapClient" which does not exist
当我尝试直接初始化类时同样的问题。
我的路径错了吗?我的命名空间?
【问题讨论】:
-
src/Client/SapSoapClient.php存在吗?否则,您的 PSR-4 自动加载器规则可能不正确 -
放在src/Sap/Client/SapSoapClient.php下你觉得“src”下的子文件夹“Sap”有问题吗?
标签: namespaces phpunit php-7 autoload