【问题标题】:Inject custom service into Behat context将自定义服务注入 Behat 上下文
【发布时间】:2016-02-01 11:16:03
【问题描述】:

是否可以构建我自己的自定义服务并将其注入到 Behat Context 类中?

我正在将 Behat 与 Symfony2 集成,我可以将 Symfony 的服务注入到我的上下文中,如下所示:

contexts:
    - Meeebu\MyBundle\Features\Security\Context\SecurityContext:
        session:    '@session'

前提是Behat\Symfony2Extension已注册。

我还使用Behat Page Object ExtensionPage 对象直接注入到上下文构造函数中,所以我的构造函数目前看起来像这样:

public function __construct(Session $session, Homepage $homepage, WelcomeAdmin $welcomeAdminPage)

现在,我想在 Context 类中使用我的自定义服务。

如何在 Behat 中创建、注册和注入它们?

【问题讨论】:

标签: symfony dependency-injection behat


【解决方案1】:

您需要创建并注册一个 behat 扩展:https://github.com/Behat/Behat/blob/2.5/src/Behat/Behat/Extension/ExtensionInterface.php

然后在 load 方法中注册你的服务(或加载一个 yml/xml/etc. 文件)。 然后将扩展类添加到 behat.yml 的扩展部分。

【讨论】:

  • 请注意,此答案仅适用于 Behat 2。在 Behat 3 中,您需要实现一个不同的接口。在 Behat 3 中,您可以避免使用 packagist.org/packages/zalas/behat-no-extension 编写自定义扩展
  • @JakubZalas,这是一个很棒的“NoExtension”扩展,谢谢;p
  • 这并没有回答如何在 context 中获得依赖项(Zalas 的扩展确实有帮助)。
猜你喜欢
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
相关资源
最近更新 更多