Behat 3.0 включва папка/път

Опитвам се да настроя Behat 3.0. Искам да променя пътя на моите функции.

В момента моята behat.yml конфигурация изглежда така:

default:
    autoload:
        '': app/tests/acceptance

Изпълнението на behat --init ще създаде acceptance/FeatureContext.php в директорията app/tests.

Той обаче ще създаде папката features в корена на моя проект. Вместо това бих искал тази папка features да бъде поставена в папка app/tests/acceptance.

Как мога да направя това?


person FooBar    schedule 12.01.2015    source източник


Отговори (1)


Behat 3 има поддръжка за пакети и профили.

Единственото нещо, което трябва да направите, е да добавите персонализирани пътища към профила по подразбиране:

default:
  autoload:
    '': %paths.base%/app/tests/acceptance
  suites:
    default:
      paths: [ %paths.base%/app/tests/acceptance/features ]

Съвет 1

Винаги използвайте променливата %paths.base%, за да можете да стартирате вашите Behat тестове от различна директория.

Съвет 2

В зависимост от механизма за автоматично зареждане PSR-0 на Behat може да бъде проблематичен, когато ще имате внедрени повече контексти.

Добра практика е да се използва PSR-4 механизъм за автоматично зареждане на композитора, за да можете да изпълнявате функции на Behat с пространство от имена.

След като сте настроили Behat, както в примера по-горе, трябва да изтриете секцията за автоматично зареждане в bahat.yml и да добавите contexts към профила default:

default:
  suites:
    default:
      paths: [ %paths.base%/app/tests/acceptance/features ]
      contexts: [ MyApp\Tests\Acceptance\FeatureContext ]

Добавете конфигурация за автоматично зареждане към composer.json:

{
    [...]
    "autoload-dev": {
        "psr-4": {
            "MyApp\\Tests\\Acceptance\\": "app/tests/acceptance"
        }
    }
    [...]
}

И след това просто изхвърлете автоматичното зареждане с composer dump-autoload.

person Sławomir Chrobak    schedule 12.01.2015