Я добавляю композитор и PHPSpec к установленной проприетарной структуре, но я не могу заставить PHPSpec работать с глобальным пространством имен, когда тестируемые классы остаются в нестандартном каталоге, который должен быть определен с помощью psr-4. Структура файла Вы должны быть осведомлены в проекте выглядит следующим образом:Как, если возможно, настроить PHPSpec без пространства имен и psr-4
каталог/root
/spec
/classnameSpec.php
/classes
/autoload
/classname.php
автозагрузка наполнен базовые классы для приложения, и они должны оставаться здесь сейчас, они не должны быть в default/src, который использует PHPSpec.
Я получил это работает, используя пространство имен с этим (часть) композитор файла
{
"require": {
"phpspec/phpspec": "3.2.2"
},
"autoload": {
"psr-4": {
"Core\\": "classes/autoload"
}
}
}
и этот phpspec.yml файл:
suites:
autoload_suite:
namespace: 'Core'
spec_prefix: ''
spec_path: ./spec
psr4_prefix: 'Core'
src_path: classes/autoload
но потребует добавления пространств имен для всех существующие классы, если я когда-либо захочу создать тесты для их запуска.
Документы PHPSpec предлагают иметь пустое пространство имен, оставив свойство namespace в файле yml, но любая попытка, которую я пытаюсь получить, приводит к ошибке.
Когда я
phpspec desc classname
он счастливо создает тестовый класс в папке спецификации, но когда я бегу phpspec я получаю:
[InvalidArgumentException]
PSR4 prefix doesn't match given class namespace.
Я пытался оставить оба свойства, как нуль, '', \\, "\\", '\\', \ и удаляя их обоих, но ни одна из них не работает. Есть ли определенная комбинация свойств, которые я могу использовать, которые будут работать, или я смирился с необходимостью добавлять пространства имен ко всему первому?
(я должен отметить, что я изменил свойство PSR-4 в композиторе «\»: классы/автозагрузка)