Определения шагов во внешних файлах в Behat
Вопрос
Behat по умолчанию ищет определения шагов в файле с именем FeatureContext
(все шаги в одном файле).
При большом количестве шагов поддерживать такой большой файл сложно.
Я хотел бы иметь один файл определений для каждого файла функции.
Как я могу иметь определения шагов во внешних файлах?
например
родовое словоРешение
Используйте наследование классов и отдельные контексты.
родовое слово Затем в /feature/FeatureContext.php
импортируйте файлы контекста:
Другие советы
У Behat есть несколько вариантов разделения FeatureContext на несколько классов. Во-первых, вы можете использовать наследование php5 старой школы. Если наследование не то, что вам нужно, Behat также поддерживает подконтексты: " Использование подконтекстов ".
Затем, если вы хотите назвать свой класс иначе, чем FeatureContext
, вы можете переопределить это в " Конфигурация контекста " вашего файла конфигурации behat.yml
.
Таким образом, вы можете разделить общие определения и перехватчики на отдельные классы и использовать их в других наборах функций, а также с подконтекстом или наследованием.
Но ваш вопрос также спрашивает:
<цитата>Я хотел бы иметь один файл определений для каждого файла функции.
Это совершенно неверный запрос. Behat and Scenario BDD - это описание поведения вашего приложения в бизнес-терминах и создание тестового словаря для описываемого поведения. Имея это в виду, логически невозможно иметь несколько разных словарей для одного набора функций. Написав определения шагов, вы сообщаете Behat, что означает этот кодовый кодовый код. И когда вы хотите, чтобы этот шаг означал разные вещи от функции к функции, вы делаете это неправильно.
Behat состоит из двух основных и достаточно отдельных концепций:
- файлы сгенерированных кодовых кодов, написанные на языке Gherkin. Эти файлы должны быть информативными. Означает, что они должны предоставить всю информацию, чтобы читатель мог их понять. Gherkin - это не новый язык программирования для функциональных тестов, это просто уценка для ваших пользовательских историй!
- классы
Given I am on "/news"
, описывают, как Behat должен тестировать ваши функции. Он определяет словарь для всего приложения, который будет использоваться со всем набором функций приложения. Это программный мост между вашими markdown -подобными пользовательскими историями и реальными функциональными тестами.
И не надо все портить. Однокомпонентный набор функций должен иметь словарь отдельных шагов (определения). Но вы можете использовать один словарь более чем в одном наборе функций благодаря наследованию и подконтекстам. И да, вы можете разделить словарь одного пакета на несколько классов php ;-)
Одно из решений - горизонтальное повторное использование с подконтекстами.Используйте подконтекст для каждой «группы функций».
родовое слово