2016-12-05 16 views
5

mam kilka testów, które mają być ładowane automatycznie w przestrzeni nazw pakietu A, stosującKompozytor zależności wymagają-dev requireing w różnych pakietów wymagają-dev

"autoload-dev": { 
    "psr-4": { 
     "Vendor\\PackageA\\PhpUnit\\": "tests/PhpUnit" 
    } 
}, 

To działa prawidłowo.

mam inny pakiet, pakiet B, która również przestrzeni nazw testów, które wymagają jednego z przestrzeni nazw testów w opakowaniu

"autoload-dev": { 
    "psr-4": { 
     "Vendor\\PackageB\\PhpUnit\\": "tests/PhpUnit" 
    } 
}, 

Jednak gdy próbuję i to plik w Pakietu B, klasa nie jest Znaleziono

use Vendor\PackageA\PhpUnit\MyTestFromA; 

class MyTestFromB extends MyTestFromA 
{ 

Daje mi do myślenia, że ​​ładowanie autoload-dev z innych pakietów nie jest ładowane.

PHP Fatal error: Class 'Vendor\PackageA\PhpUnit\MyTestFromA' not found in /full/path/to/PackageBClass.php on line 3

Gdy próbuję i zaimportować plik, który jest automatycznie ładować za pomocą autoload z pakietu zamiast B autoload-dev, mam żadnego błędu.

Jak mogę to przezwyciężyć?

Część mnie myśli, aby utworzyć pakiet tylko do testów i mieć go załadowane automatycznie w obu bez autoload-dev, ale chcę najpierw potwierdzić.

+0

Duplikat + odpowiedź: http://stackoverflow.com/a/21171171/1163786 –

Odpowiedz

6

Rozwiązanie: Composer autoload-dev does not work.

Take a look at the docs . It says: "autoload-dev (root only)". root only means it only applies to the root package. As you included the package, the shown composer.json file is not the root package and the autoload-dev section is thus ignored.

Powiązane problemy