2017-06-02 88 views
1

我用PHPSPEC 3.4.0.When我跑phpsec与为什么phpspec无法找到类?

vendor/bin/phpspec run

我得到这个错误:

class Eastsea\Service\FileStorage\DuplicateFileStorage does not exist.

以下是有关自动加载部分我composer.json文件:

"autoload": { 
    "psr-4": { 
     "App\\": "app/" 
    }, 
    "psr-0": { 
     "EastSea\\": "src/" 
    } 
} 

这里是我的文件夹树:

./src 
`-- EastSea 
    `-- Service 
     `-- FileStorage 
      |-- DuplicateFile.php 
      |-- DuplicateFileStorage.php 
      `-- Result.php 

类:

<?php 

namespace EastSea\Service\FileStorage; 

class DuplicateFileStorage 
{ 
    public function validate() 
    { 
     // TODO: write logic here 
    } 

    public function storage() 
    { 
     // TODO: write logic here 
    } 

    public function handle(DuplicateFile $file) 
    { 
     $file->hash(); 
    } 
} 

规格:

<?php 

namespace spec\Eastsea\Service\FileStorage; 

use \EastSea\Service\FileStorage\DuplicateFileStorage; 
use \EastSea\Service\FileStorage\Result; 
use PhpSpec\ObjectBehavior; 
use Prophecy\Argument; 

class DuplicateFileStorageSpec extends ObjectBehavior 
{ 
    function it_is_initializable() 
    { 
     $this->shouldHaveType(DuplicateFileStorage::class); 
    } 

} 
+0

在使用开始时删除“\”。没有必要。用途需要FQCN(完全合格的类名称)。 – sensorario

回答

1

试试这个:

"autoload": { 
    "psr-4": { 
     "App\\": "app/", 
     "": "src/" 
    } 
} 

很显然运行composer dump-autoload你composer.json的更新之后。

+0

It works.Thanks much.But为什么剂量我的配置不工作?我写了一个test.php来创建该对象。'EastSea \'和'''''都工作。 – macc

相关问题