Как правило, старайтесь как можно больше формулировать сценарий, как если бы вы разговаривали о нем, и исключить как можно больше ненужной информации.
Например, я бы хотел, чтобы выСценарии выше, чтобы прочитать что-то вроде:
Given our customer Bob Test is scheduling a repair order
And we have two technicians: "Fred Technician" and "George Nontechnician"
When Bob Test decides he wants a Personal Diagnostic
And he selects a technician
Then the search results should only contain "Fred Technician"
Затем сделайте все необходимое, чтобы эти шаги работали - будь то вход в систему или иным образом.Обратите внимание, что я не говорил о «страницах» и не предпринимал реальных шагов - они должны быть интуитивно понятны для пользователя.BDD не о тестировании.Речь идет о том, чтобы придумать примеры того, как люди собираются использовать систему, чтобы вы могли обсудить эти примеры, изучить их, найти исключения и различные сценарии и т. Д.
Проверка того, что фильтр видимне ценный.Пользователю все равно, что фильтр виден.Ему важно, чтобы он мог использовать фильтр для получения своих результатов, поэтому просто сделайте это.
В коде я обычно передаю объект "World" между своими шагами.Это может убрать с дороги много губбин.Я не использовал Gherkin много, но я предполагаю, что это обеспечивает аналогичную способность.Вы можете хранить там все пользовательские данные, какие технические специалисты вы создали, так что вы можете проверить, не приводит ли это «Джордж Нетехник» к результатам и т. Д.
Полезно использовать понятные имена для ролей.тоже, потому что тогда люди могут представить, как выглядят Фред и Джордж.
Избавьтесь от всего, что не будет иметь значения в сценарии и не поможет людям представить, что это происходит.Вы знаете, что у Боба есть разрешение планировать заказ, потому что это то, что он делает - просто добавьте необходимые вещи к этому шагу.
«Когда» - это поведение, которое вы хотите описать.В этом случае вас интересует возможность фильтрации персональной диагностики, поэтому все взаимодействия с пользователем, связанные с поведением, должны быть в «Когда», а все предыдущие взаимодействия - в «Гивенсе».Я считаю полезным попытаться придумать контекст, в котором результат будет другим - например, что произойдет, если нет доступных специалистов по ПД?Это говорит мне, в чем разница;мы настроим другой контекст , но выполним то же событие .Контекст идет в Данном, события идут в Когда.(Раньше это было намного проще до появления «Фона»).
В общем, если ваши глаза мерцают, когда вы смотрите на сценарий, вы делаете что-то не так.
Надеждаэто помогает.