Это интересная тема, с которой я столкнулся, и у меня и моих коллег разные мнения по этому поводу. Должен ли ваш корнишон точно описывать, что делает тест, или ТОЛЬКО показывать бизнес-логику, которую вы пытались достичь в тесте.
Самый большой пример, с которым я постоянно сталкиваюсь на работе, заключается в том, что если у вас есть доступ к элементу A, то вы должны иметь доступ к A. У нас может быть 20 различных типов пользователей с доступом к A, поэтому мы выбираем только 1 ( чтобы наш набор тестов не занимал 40 часов). Так что же "лучше"?
A
Scenario: A user with access to item A can access A
Given I am a type 4 user with access to item A
When I try to access A
Then I am granted access to A
or B
Scenario: A user with access to item A can access A
Given I am a user with access to item A
When I try to access A
Then I am granted access to A
Обратите внимание на разницу в данных утверждениях (пользователь типа 4)
В определении шага мы собираемся использовать пользователя 4-го типа для нашего теста, но тест не специфичен для пользователя 4-го типа. Любой пользователь с элементом A будет работать для этого теста, мы просто используем пользователя типа 4, потому что нам нужен тип пользователя для входа в систему.
Итак, A описывает, что делает тест (вход в систему с пользователем типа 4 с доступом к элементу A).
И B описывает функциональность, необходимую для доступа к элементу A (просто пользователь с доступом к элементу A).
Прежде чем вы спросите, как мы определяем, кто имеет доступ к элементу А, это SQL-запрос к базе данных в поисках определенного элемента, связанного с пользователем.