2014-12-01 2 views
0

Получение следующей формы ошибки PHPUnit:Класс не найден выпуск (композитор, PHPUnit)

Fatal error: Class 'FoobarTest\Money\Money' 
not found in /www/foobar/tests/FoobarTest/Money/MoneyTest.php on line 11 

Моя структура как:

/src/Foobar/Money/Money.php (class Money, namespace Foobar\Money) 

/tests/FoobarTest/Money/Money.php (class Money, namespace FoobarTest\Money) 

Автозагрузка сделано через композитора:

"autoload": { 
    "psr-4": { 
     "Foobar\\": "src/" 
    }, 
    "psr-0": { 
     "FoobarTest\\": "tests/" 
    } 
}, 

Пробовали с PSR0, PSR2, PSR4, ...

MoneyTest класс:

<?php 
namespace FoobarTest\Money; 


class MoneyTest extends \PHPUnit_Framework_TestCase 
{ 
    // ... 

Деньги класс:

<?php 
namespace Foobar\Money; 


class Money 
{ 
    // ... 

Почему она пытается загрузитьFoobarTest\Money\Money вместо Foobar\Money\Money?

+1

Итак, как вы используете класс 'Money' в своем тесте? Я не вижу, что вы импортировали его с помощью 'use' вообще. – zerkms

+0

lulz * aaaah * ... это был намек, который я искал @zerkms – DanFromGermany

ответ

1

Чтобы помочь PHP автозагрузчика (и композитор), вы должны импортировать целевой класс, используя

use Foobar\Money\Money; 

в тестовом файле.

Также вы, вероятно, захотите дать вашему тестовому файлу имя MoneyTest.php, чтобы оно соответствовало соответствующему имени класса.

+0

Я использовал 'Foobar \ Money \ Money' внутри' FoobarTest \ ... 'без объявления полной квалифицированной ссылки на класс. – DanFromGermany

+1

"* OK (1 тест, 1 утверждение) *" :-))) – DanFromGermany

Смежные вопросы