如何在Behat 3中的上下文之间进行通信? [英] How to communicate between contexts in behat 3?
本文介绍了如何在Behat 3中的上下文之间进行通信?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不能再使用版本3中的getMainContext()和getSubcontext($ alias).版本3中的上下文之间进行通信的方式是什么?上下文特征是唯一的方法吗?
I can't use getMainContext() and getSubcontext($alias) in version 3 any more. What is the way to communicate between context in version 3. Are context traits the only way?
# behat.yml
default:
suites:
guest_features:
paths: [ %paths.base%/features/web ]
filters: { role: guest }
contexts: [ GuestContext ]
user_features:
paths: [ %paths.base%/features/web ]
filters: { role: member }
contexts: [ MemberContext ]
groupled_features:
paths: [ %paths.base%/features/web ]
filters: { role: grouplead}
contexts: [ GroupleadContext ]
admin_features:
paths: [ %paths.base%/features/web ]
filters: { role: admin }
contexts: [ AdminContext ]
extensions:
Behat\MinkExtension:
base_url: http://ollo.com
browser_name: firefox
selenium2:
capabilities: { "browser": "firefox", "version": "24"}
goutte: ~
推荐答案
You can use scenario hooks, as explained in the "Accessing contexts from each other" documentation page:
use Behat\Behat\Context\Context;
use Behat\Behat\Hook\Scope\BeforeScenarioScope;
class MemberContext implements Context
{
/** @var GuestContext */
private $guestContext;
/** @BeforeScenario */
public function before(BeforeScenarioScope $scope)
{
// Get the environment
$environment = $scope->getEnvironment();
// $environment is an instance of
// Behat\Behat\Context\Environment\InitializedContextEnvironment
// Get all the contexts you need in this context
$this->guestContest = $environment->getContext('GuestContext');
// $this->guestContest is the instance of GuestContext
}
}
这篇关于如何在Behat 3中的上下文之间进行通信?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文