Composer自动加载无法在测试中进行

时间:2018-08-01 11:12:19

标签: php composer-php

我在作曲家的psr-4自动加载方面遇到了一些问题。我有一个看起来像这样的项目结构

Project
- src/
- - Utils/
- - - ID/
- - - - IDInterface.php
- - - - ID.php
- tests/
- - IDTest.php
- ... (other stuff)

然后,在我的composer.json文件中,我有一个psr-4自动加载,如下所示。

"autoload": {
        "psr-4": {
             "Project\\": "src"
        }
    }

然后在我的测试课程(IDTest.php)中,我有以下内容

<?php

use PHPUnit\Framework\TestCase;
use Project\Utils\ID;

/**===========================
||          IDTest
==============================
*/

class IDTest extends TestCase
{
    public function testConstructFromString()
    {
        $id = new ID("foo");
        $this->assertSame("foo", $id->value());
    }
}

?>

但是,当我运行测试时,出现此错误:

1) IDTest::testConstructFromString
Error: Class 'Project\Utils\ID' not found

它似乎指向直线:

$id = new ID("foo");

这表明自动加载无法正常工作。

作为参考,ID类看起来像这样:

<?php

namespace Javelin\Util;

use Javelin\Utils\IDInterface;
use Javelin\Util\IllegalArgumentException;

/**--------------------------------------------------------------------------
|
|   ID
|
-----------------------------------------------------------------------------
|
|   An ID represents an identifier
|
-----------------------------------------------------------------------------
*/

class ID implements IDInterface{...}
?>

我尝试运行composer dump-autoload来查看是否仅需要更新自动装带器。但是,可悲的是,问题仍然存在。

有什么建议吗?

感谢进阶:)

1 个答案:

答案 0 :(得分:1)

尝试

use Project\Utils\ID\ID;

Project\Utils\ID-名称空间。 Project\Utils\ID\ID-类。