Представьте, что ваш тест это эксперимент (над приложением) и попытайтесь прочитать его так:
При условии что
GIVEN и
GIVEN а также
GIVEN,
Если я
WHEN
To тогда должно произойти
THEN .
Т.е. Given позволяет вам сократить описание предварительной подготовки к тесту
до описания желаемого состояния приложения, например:
При условии, что пользователь уже залогинен.
При условии, что корзина пуста
При условии, что поле выбрана опция такая-то.
При условии, что в поле А введено значение Х а в поле Б значение Y
А потом вы переходите к самому эксперименту.
When: я нажимаю на кнопку А
When: и нажимаю на кнопку Б
Then: создается объект C
В данном случае скорее всего условие это нахождение на какой-то странице, или то, что выбрана какая-то секция приложения.
Вы же не можете "в воздухе" нажать кнопку A и Б, правильно? Given это не действие, это состояние.
Используя Given вы как бы говорите мне все равно каким образом это состояние будет достигнуто, мне важен результат, потому что от него отталкивается мой эксперимент.