В прошлом я пробовал 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.
Как правильно настроить автозагрузку, чтобы она распознавала мой контекст?
Спасибо
Вам не нужно писать это так. Это работает для меня со следующим:
# 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 был лучше задокументирован. Вы даже не можете найти эту информацию четко в коде в любом месте.
Я починил это. Я предполагал, что базовый путь был корнем моего каталога, но это место, где хранится behat.yml. Итак, чтобы работать с моим текущим конфигом, мне пришлось изменить пути в файле behat.yml следующим образом:
default:
autoload:
'': %paths.base%/../bootstrap
suites:
default:
paths:
- %paths.base%/../features
contexts:
- FeatureContext