Огурец — Включите общие шаги во многих сценариях (Codeception)

Я использую корнишон, управляемый кодовым восприятием для 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"...

Является ли это возможным? Как я могу это сделать?

0

Решение

В дополнение к ответу Кайла я бы предпочел переписать сценарии, как в вашем примере, используя таблицу в качестве многострочного аргумента следующим образом:

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

Он менее обязателен и более дружественен к человеку («я должен видеть» в каждой строке слишком скучно), поэтому было бы легче обсудить его с клиентом.

Обратите внимание, что здесь таблица используется как многострочный аргумент, а не как пример. Посмотрите на таблицу как многострочный аргумент для шагов здесь:

2

Другие решения

Почему ты не можешь написать новый шаг?

/**
*
* @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
2

По вопросам рекламы [email protected]