2015-11-03 47 views
0

我有大型(超過1000行)FeatureContext類,我想在幾個邏輯部分拆分這個文件。但我不知道如何在Behat中創建自己的課程。我閱讀文檔http://docs.behat.org/en/v2.5/guides/4.context.html但我不明白。在文檔示例中,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

頁面對象模式是一種通過將UI知識與操作和斷言分開來保持上下文文件清潔的方式。

我用PageObjectsExtension在我的項目,我看上下文的是這樣的:在behat.yml

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

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

配置擴展如果需要多個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 
相關問題