Я использую корнишон, управляемый кодовым восприятием для BDD в моем проекте. Я хотел бы проверить, способен ли пользователь, которому назначена роль, видеть пункты меню, которые ему подходят.
На данный момент я использую этот сценарий:
Scenario: basic menu check
User "foo" has role "basic_user"Given I am logged in as "foo" with password "Test123!"Then I should see "Project" menu point
And I should see "Settings" menu point
And I should see "Notifications" menu point
And I should see "Messages" menu point
And I should see "Logout" menu point
Then I logout
Я хотел бы повторно использовать 3 шага много раз:
And I should see "Settings" menu point
And I should see "Notifications" menu point
And I should see "Messages" menu point
Я не хочу копировать&вставьте его каждый раз, когда я создаю новый сценарий. Вместо этого я хочу написать это как … допустим, включить файл (также на языке корнишонов) и использовать его в моих сценариях:
Scenario: basic menu check
...
Include "common_menu_check"...
Является ли это возможным? Как я могу это сделать?
В дополнение к ответу Кайла я бы предпочел переписать сценарии, как в вашем примере, используя таблицу в качестве многострочного аргумента следующим образом:
Scenario: basic menu check
User "foo" has role "basic_user"Given I am logged in as "foo" with password "Test123!"Then I should see menu points:
| Settings |
| Notifications |
| Messages |
| Logout |
Then I logout
Он менее обязателен и более дружественен к человеку («я должен видеть» в каждой строке слишком скучно), поэтому было бы легче обсудить его с клиентом.
Обратите внимание, что здесь таблица используется как многострочный аргумент, а не как пример. Посмотрите на таблицу как многострочный аргумент для шагов здесь:
Почему ты не можешь написать новый шаг?
/**
*
* @Then /^I should see the common menu points$/
*/
public function iShouldSeeTheCommonMenuPoints()
{
// CODE HERE FOR SEEING MENU ITEMS
}
А затем используйте этот шаг в вашем файле функций:
Scenario: basic menu check
User "foo" has role "basic_user"Given I am logged in as "foo" with password "Test123!"Then I should see the common menu points
And I should see "Project" menu point
And I should see "Logout" menu point
Then I logout