2015-11-03 3 views
0

У меня есть большой (1000+ строк) класс FeatureContext, и я хочу разбить этот файл на несколько логических частей. Но я не знаю, как создавать свои собственные классы в Бехате. Я читаю документы http://docs.behat.org/en/v2.5/guides/4.context.html, но я не понимаю. А в примере docs FeatureContext расширяет BehatContext, но мне нужно, чтобы FeatureContext расширяет MinkContext, потому что Mink не работает без него. Если вы можете написать пример моего собственного класса с функцией, которые используют норок и показать мне, как использовать этот класс в FeatureContext, что было бы здоровоКак я могу использовать свои классы в Behat + Mink?

ответ

0

Эта конфигурация должна добиться того, что вам нужно

файл: behat.yml

default: 
    suites: 
    yourCustomSuite: 
     paths: 
     - %paths.base%/src/your/bundle/name/Features/YourSuiteName 
     contexts: 
     - YourBundleName\Contexts\YourContextName 

файл: YourBundleName\Contexts\YourContextName.php

class YourContextName extends FeatureContext 
{ 
} 

и пусть FeatureContext продлить \Behat\MinkExtension\Context\MinkContext

0

Посмотрите на PageObjectExtension.

Page object pattern - это способ сохранения ваших файлов контекста, отделяя знания пользовательского интерфейса от действий и утверждений.

Я использовал PageObjectsExtension в моем проекте, и мои контексты выглядеть как это:

/** 
* @When /^I order products by "([^"]*)"$/ 
* 
* @param $order 
*/ 
public function orderProductsBy($order) 
{ 
    $this->getPage("Catalog")->orderProductsBy($order); 
} 

Настройка расширения на behat.yml

SensioLabs\Behat\PageObjectExtension: 
     namespaces: 
     page: [NS1\Features\Page, NS2\Features\Page] 
     element: [NS1\Features\Page\Element, NS2\Features\Page\Element] 

Если вам нужно несколько Contexts, вы можете добавьте его в свой behat.yml

default: 
    suites: 
    selenium: 
     mink_session: selenium 
     mink_javascript_session: selenium 
     contexts: 
     - Namespace\FeatureContext 
     - Namespace\CatalogContext 
     - Namespace\CheckoutFinishContext 
     - Namespace\CheckoutIndexContext 
     - Namespace\HomeContext 
     - Namespace\ProductDetailsContext 
     - Namespace\CartContext 
     - Namespace\CustomerAccountContext 
     - Namespace\CustomerLoginContext 
     - Namespace\FilterContext 
     - Namespace\TelesalesContext 
     - Namespace\HelpdeskContext 
     - Namespace\FaqContext 
     - Namespace\BrandContext 
Смежные вопросы