PHPUnit не находит класс - PullRequest
       17

PHPUnit не находит класс

0 голосов
/ 28 февраля 2019

Я работаю над новым классом токенизатора для PHP_CodeSniffer.Это также требует создания нового Стандарта, поскольку в каждом стандарте указаны допустимые токенизаторы.

Мои новые классы используют те же пространства имен, что и «родственные» классы из исходной кодовой базы.

Если яиспользуйте composer, чтобы установить мой проект, и запустите phpcs, автозагрузчик, похоже, отлично подхватывает мои новые классы.PHP_CodeSniffer загрузит мой токенайзер, вызвав:

$className = ‘PHP_CodeSniffer\\Tokenizers\\’ . $type;
$class = new $className(<stuff>);

Точно так же мой пользовательский стандарт имеет оператор использования для класса в исходной кодовой базе.При запуске phpcs ошибки не выдаются.

Когда я пытаюсь запустить тестовый файл через phpcs в модульном тесте, я получаю сообщение об ошибке, что мой пользовательский снифф-файл не может найти класс в использованиизаявление.Я думаю, это связано с автоматической загрузкой.Файл bootstrap.php для phpunit требует __DIR__ . ‘/../vendor/autoload.php’. Мой проект composer.json имеет:

“autoload”: {
  “psr-4”: { “PHP_CodeSniffer\\”: “src\” }
},
“autoload-dev”: {
  “psr-4”: { “PHP_CodeSniffer\\Tests\\”: “tests\” }
}

Есть ли проблема с использованием того же пространства имен, что и в исходном коде?С регистрацией того же пространства имен в другом месте в композиторе?Почему это работает во время выполнения, но не в тестировании?

1 Ответ

0 голосов
/ 04 марта 2019

Оказывается, PHPUnit имеет свой собственный загрузчик.Когда я добавил require_once() для этого в моем загрузчике PHPUnit, он загрузился успешно.Спасибо пользователю в субреддите PHP.

...