2013-12-24 4 views
0

У меня возникли трудности с правильной настройкой структуры Behat. Тест работает нормально, однако определения шагов не извлекаются из файла FeatureContext. Попробовали ответы на другие вопросы без везения. Файл behat.yml в настоящее время хранится в корневом каталоге проекта:Behat - Внедрить определения шагов

default: 
paths: 
    features: 'bin/features' 
    bootstrap: 'bin/features/bootstrap' 
context: 
    class:  'FeatureContext' 
extensions: 
    Behat\MinkExtension\Extension: 
     goutte: ~ 
     selenium2: ~ 

В корне проекта у меня есть папка бин, который содержит стандартный behat файлов: behat.bat, webunit.bat и т.д. В пределах папка бен у меня есть папка особенности, которая содержит файл search.feature:

Feature: Search 
In order to find a word 
As a website user 
I need to be able to search for a word 

@javascript 
Scenario: Searching for a word that does exist 
Given I am on "http://drupalcamp.mx/search/" 
When I fill in "Escriba las palabras clave" with "behat, mink" 
And I press "Buscar" 
Then I should see "Behavior Driven Development" 
And I follow "Behavior Driven Development" 
And I wait for 5 seconds 

в папке особенности я есть самозагрузки папка, которая содержит файл «FeatureContext»

namespace features; 
    use Behat\Behat\Context\ClosuredContextInterface, 
     Behat\Behat\Context\TranslatedContextInterface, 
     Behat\Behat\Context\BehatContext, 
     Behat\Behat\Exception\PendingException; 
    use Behat\Gherkin\Node\PyStringNode, 
     Behat\Gherkin\Node\TableNode; 
    use Behat\MinkExtension\Context\MinkContext; 

    /** 
    * Features context. 
    */ 
    class FeatureContext extends MinkContext 
    { 
    /** 
    * Initializes context. 
    * Every scenario gets it's own context object. 
    * 
    * @param array $parameters context parameters (set them up through behat.yml) 
    */ 
    public function __construct(array $parameters) 
    { 
     // Initialize your context here 

    } 
    /** 
    * @Given /^I wait for (\d+) seconds$/ 
    */ 
    public function iWaitForSeconds($seconds) 
    { 
     $this->getSession()->wait($seconds*1000); 
    } 

Когда я запускаю «behat» из корневого каталога проекта в CL, он запускает тест в браузере, передает все, но не распознает определение шага, он указывает: «Вы можете реализовать определения шагов для неопределенных шагов с помощью этих фрагментов: », который затем дает пример.

ответ

0

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

Если вы используете композитор, вот пример того, как это можно сделать:

"autoload": { 
    "psr-0": { "": ["src/", "bin/features/bootstrap/"]} 
} 

Примечание:бен папки действительно нечетное место, чтобы поместить свои функции или файлы контекст ,

Связанный с ответом вопрос: Behat + Symfony, Custom definitions are not loaded (фактически, может быть дубликат).