2017-01-20 5 views
1

Я добавляю композитор и 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 в композиторе «\»: классы/автозагрузка)

ответ

0

я получил ответ, который я искал с Unfunco над на странице PHPSpec Github вопросов. Оказывается, вы должны полностью опустить свойства из yml-файла, а не просто устанавливать их в нулевые строки.

Так файл композитор выглядит следующим образом:

{ 
     "require": { 
     "phpspec/phpspec": "3.2.2" 
     }, 
     "autoload": { 
      "psr-4": { 
       "": "classes/autoload" 
     } 
    } 

И файл YML, это:

suites: 
    autoload_suite: 
    src_path: classes/autoload 
Смежные вопросы