Как, если возможно, настроить PHPSpec без пространства имен и psr-4

Я добавляю composer и PHPSpec в установленную проприетарную среду, но не могу заставить PHPSpec работать с глобальным пространством имен, когда тестируемые классы находятся в нестандартном каталоге, который должен быть определен с помощью psr-4.
Файловая структура, которую вы должны знать в проекте, выглядит следующим образом:

/root
/spec
/classnameSpec.php
/classes
/autoload
/classname.php

Каталог автозагрузки заполнен основными классами для приложения, и они должны пока оставаться здесь, они не должны находиться в каталоге по умолчанию / 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

он успешно создает тестовый класс в папке spec, но когда я запускаю phpspec, я получаю:

[InvalidArgumentException]
PSR4 prefix doesn't match given class namespace.

Я попытался оставить оба свойства равными null, », \\, «\\», ‘\\’, \ и удалить их оба, но ни одно из них не работает. Есть ли определенная комбинация свойств, которые я могу использовать, которые будут работать, или я смирился с необходимостью сначала добавить пространства имен ко всему?

(Должен отметить, что я изменил свойство psr-4 в composer на «\»: classes / autoload)

1

Решение

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

Итак, файл композитора выглядит так:

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

И файл YML, это:

suites:
autoload_suite:
src_path: classes/autoload
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector