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