Как передать переменную объекта аргумента из behat.yml в конструктор FeatureContext.php? - PullRequest
0 голосов
/ 23 апреля 2019

В моем контексте behat.yml мне нужно передать переменную объекта аргумента в метод конструктора FeatureContext.php.

В моем файле behat.yml я не могу создать экземпляр класса, требуемого конструктором в FeatureContext.php.

Когда я запустил тест Behat, он показывает ошибку, в которой говорится, что я передал "String", но требуется экземпляр класса 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 Ответ

1 голос
/ 24 апреля 2019

Мои предложения:

  • FeatureContext должен расширяться MinkContext или другим контекстом из Drupal, который расширяет MinkContext, если таковой имеется (возможно, MinkContext от drupal).
  • файл yml должен загружать MinkContext только один раз, добавьте только класс, который расширяет MinkContext непосредственно через другой класс.Например: если FeatureContext расширяет MinkContext или другой класс, расширяющий MinkContext, то в yml вы можете добавить только FeatureContext
  • для объектов страницы, использующих инъекцию, так что вы можете воспользоваться преимуществами автозаполнения в вашем ide
  • относительно конструктора, который выглядит как объект страницы, вы можете импортировать с помощью use
...