如何在Behat 3中的上下文之间进行通信? [英] How to communicate between contexts in behat 3?

查看:92
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆