如何在Behat + Mink中使用我的课程?

时间:2015-11-03 14:56:40

标签: behat

我有大量(1000多行)的FeatureContext类,我想将这个文件分成几个逻辑部分。但我不知道如何在Behat中创建自己的课程。我阅读了文档http://docs.behat.org/en/v2.5/guides/4.context.html但我无法理解。在docs示例中,FeatureContext扩展了BehatContext,但是我需要FeatureContext扩展MinkContext,因为Mink在没有它的情况下不能工作。如果你可以用使用Mink的函数编写我自己的类的例子,并告诉我如何在FeatureContext中使用这个类很棒

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我刚刚找到了使用Mink {4}}在Behat中使用subcontexts(类)的正确方法 希望它会帮助某人

答案 2 :(得分:0)

寻找PageObjectExtension

  

页面对象模式是一种通过将UI知识与操作和断言分开来保持上下文文件清洁的方法。

我在我的项目中使用了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