Вопрос

Behat по умолчанию ищет определения шагов в файле с именем FeatureContext (все шаги в одном файле).
При большом количестве шагов поддерживать такой большой файл сложно.

Я хотел бы иметь один файл определений для каждого файла функции.

Как я могу иметь определения шагов во внешних файлах?

например

родовое слово
Это было полезно?

Решение

Используйте наследование классов и отдельные контексты.

родовое слово

Затем в /feature/FeatureContext.php импортируйте файлы контекста:

родовое слово

Другие советы

У Behat есть несколько вариантов разделения FeatureContext на несколько классов. Во-первых, вы можете использовать наследование php5 старой школы. Если наследование не то, что вам нужно, Behat также поддерживает подконтексты: " Использование подконтекстов ".

Затем, если вы хотите назвать свой класс иначе, чем FeatureContext, вы можете переопределить это в " Конфигурация контекста " вашего файла конфигурации behat.yml.

Таким образом, вы можете разделить общие определения и перехватчики на отдельные классы и использовать их в других наборах функций, а также с подконтекстом или наследованием.

Но ваш вопрос также спрашивает:

<цитата>

Я хотел бы иметь один файл определений для каждого файла функции.

Это совершенно неверный запрос. Behat and Scenario BDD - это описание поведения вашего приложения в бизнес-терминах и создание тестового словаря для описываемого поведения. Имея это в виду, логически невозможно иметь несколько разных словарей для одного набора функций. Написав определения шагов, вы сообщаете Behat, что означает этот кодовый кодовый код. И когда вы хотите, чтобы этот шаг означал разные вещи от функции к функции, вы делаете это неправильно.

Behat состоит из двух основных и достаточно отдельных концепций:

  1. файлы сгенерированных кодовых кодов, написанные на языке Gherkin. Эти файлы должны быть информативными. Означает, что они должны предоставить всю информацию, чтобы читатель мог их понять. Gherkin - это не новый язык программирования для функциональных тестов, это просто уценка для ваших пользовательских историй!
  2. классы Given I am on "/news", описывают, как Behat должен тестировать ваши функции. Он определяет словарь для всего приложения, который будет использоваться со всем набором функций приложения. Это программный мост между вашими markdown -подобными пользовательскими историями и реальными функциональными тестами.

И не надо все портить. Однокомпонентный набор функций должен иметь словарь отдельных шагов (определения). Но вы можете использовать один словарь более чем в одном наборе функций благодаря наследованию и подконтекстам. И да, вы можете разделить словарь одного пакета на несколько классов php ;-)

Одно из решений - горизонтальное повторное использование с подконтекстами.Используйте подконтекст для каждой «группы функций».

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top