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


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

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

Мой композитор.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

И мое поведение.файл 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.

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

Спасибо

Author: Samer, 2014-10-30

2 answers

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

# 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

Обратите внимание, что мне не нужно было помещать его в новую строку или рассматривать как ассоциативный массив. Я изменил свои контексты на автоматическую загрузку из каталога "контексты" в корневом каталоге. Меня немного раздражает, что это подпапка в разделе "функции" и что по умолчанию папка называется "начальная загрузка", а не "контексты".

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

 3
Author: pthurmond, 2015-02-11 20:42:02

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

default:
  autoload:
    '': %paths.base%/../bootstrap
  suites:
    default:
      paths:
        - %paths.base%/../features
    contexts:
        - FeatureContext
 1
Author: Samer, 2014-10-31 07:39:34