Behat 3 — класс контекста `FeatureContext` не найден и не может быть использован

В прошлом я пробовал Behat 2.5, и у меня не было проблем с его настройкой, но сейчас я только что скачал Behat 3, и у меня возникли некоторые трудности с его настройкой.

Моя проблема заключается в том, что после новой установки, если я создаю файл behat.yml, я не могу определить, где находится файл FeatureContext, и не могу запустить какие-либо тесты.

Мой composer.json выглядит следующим образом:

{
"require-dev": {
"behat/behat": "~3.0.4",
"sensiolabs/behat-page-object-extension": "2.0.*@dev"},
"require": {
"behat/mink": "1.6.*",
"behat/mink-goutte-driver": "*",
"behat/mink-selenium2-driver": "*"}

}

Папки моего проекта структурированы следующим образом:

behat/
bootstrap/
FeatureContext.php
config/
behat.yml
features/
CheckHome.feature
vendor/
composer.json
composer.lock

И мой файл behat.yml:

default:
autoload:
'': %paths.base%/../bootstrap
suites:
default:
paths:
- %paths.base%/../features
contexts:
- FeatureContext

И когда я пытаюсь запустить сценарий внутри CheckHome.feature, используя

vendor/bin/behat

Я получаю следующую ошибку:

Behat\Behat\Context\Exception\ContextNotFoundException]
`FeatureContext` context class not found and can not be used.

Как правильно настроить автозагрузку, чтобы она распознавала мой контекст?

Спасибо

3

Решение

Вам не нужно писать это так. Это работает для меня со следующим:

# behat.yml
default:
autoload: [ %paths.base%/contexts ]
extensions:
Behat\MinkExtension:
base_url: http://www.google.com
sessions:
default:
selenium2: ~
Sanpi\Behatch\Extension: ~
suites:
default:
paths:    [ %paths.base%/features ]
filters:
contexts:
- FeatureContext

Обратите внимание, что мне не нужно было помещать его в новую строку или обрабатывать как ассоциативный массив. Я изменил мои контексты для автозагрузки из каталога «контексты» в корне. Я нахожу это несколько раздражающим, что это подпапка в разделе «functions» и что папка называется «bootstrap», а не «context» по умолчанию.

Я хотел бы, чтобы Behat 3.x был лучше задокументирован. Вы даже не можете найти эту информацию четко в коде в любом месте.

3

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

Я починил это. Я предполагал, что базовый путь был корнем моего каталога, но это место, где хранится behat.yml. Итак, чтобы работать с моим текущим конфигом, мне пришлось изменить пути в файле behat.yml следующим образом:

default:
autoload:
'': %paths.base%/../bootstrap
suites:
default:
paths:
- %paths.base%/../features
contexts:
- FeatureContext
1

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