如何将参数对象变量从behat.yml传递给FeatureContext.php构造函数?

时间:2019-04-23 02:58:26

标签: drupal-8 behat

在我的behat.yml上下文中,我需要将一个参数对象变量传递给FeatureContext.php构造函数方法。

在我的behat.yml文件中,无法在FeatureContext.php中实例化构造函数所需的类的实例。

当我运行Behat测试时,它显示一个错误,说我传入了“字符串”,但需要使用FourZeroFour类的实例

这是我的behat.yml

local:
  suites:
    default:
      paths:
        # Set features to repo root so that .feature files belonging to contrib
        # modules, themes, and profiles can be discovered.
        features: /var/www/mywebsite
        bootstrap: /var/www/mywebsite/tests/behat/features/bootstrap
      contexts:
        - Drupal\FeatureContext: 
          fourZeroFour: FourZeroFour
        - Drupal\DrupalExtension\Context\DrupalContext
        - Drupal\DrupalExtension\Context\MinkContext
        - Drupal\DrupalExtension\Context\MessageContext
        - Drupal\DrupalExtension\Context\DrushContext
  extensions:

这是我在FeatureContext.php中的构造方法

/**
 * FeatureContext class defines custom step definitions for Behat.
 */
class FeatureContext extends PageObjectContext implements SnippetAcceptingContext {

  private $fourZeroFour;

  public function __construct(FourZeroFour $fourZeroFour) {
    $this->fourZeroFour = $fourZeroFour;
  }

1 个答案:

答案 0 :(得分:1)

我的建议是:

  • FeatureContext应该扩展MinkContext或来自Drupal的另一个上下文,如果有的话,它可以扩展MinkContext(也许来自drupal的MinkContext)。
  • yml文件仅应加载MinkContext一次,仅添加直接扩展MinkContext的类(通过另一个类)。 例如:如果FeatureContext扩展了MinkContext或另一个扩展了MinkContext的类,那么在yml中,您只能添加FeatureContext
  • 对于页面对象使用注入,以便您可以在自己的ide中受益于自动完成功能
  • 关于似乎是页面对象的构造函数,您可以使用use
  • 进行导入