Cucumber - Javascript вызывает определения шагов входа перед другими определениями шагов

Используя Chimp.js, Cucumberjs и WebdriverIO, я пытаюсь запустить определения шагов входа в систему в экземпляре браузера перед другими определениями шагов, которые зависят от пользователя, который должен войти в систему. И, возможно, без добавления их в Background снова и снова для каждого файла объектов.

Это возможно? Я довольно новичок в Wedbdriver.io и Cucumber, и любой совет будет очень полезен. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

1 ответ

Решение

Лично я не думаю, что это хорошая идея. Для входа в систему необходимо указать "кто" является пользователем. Позже, когда ваше приложение станет более сложным, у вас могут возникнуть взаимодействия между разными пользователями. Скрывать все это от сценария нехорошо.

Что вы можете сделать, так это объединить пользовательскую спецификацию и логин за один шаг, например

Given I am logged in as an admin
Given Fred is logged in as a sales executive

и т.п.

Если вы хорошо разбираетесь в том, как вы реализуете эти шаги, вы можете держать вещи довольно сухо, извлекая вспомогательные методы из определений шагов и используя глобальные переменные для хранения людей, например

Given 'I am logged in as an admin' do
  @i = create_user role: admin
  login as: admin, user: @i

и повторно использовать эти методы в других шагах входа в систему.

Если вы хорошо организовываете свои функции, вы можете справиться со многими из этих вызовов, например:

Feature: Basic admin ops
  Background: 
    Given I am logged in as an admin

  Scenario: I can foo
    When I foo

  Scenario: I can bar
    When I bar

Несколько заключительных мыслей...

Каждый сценарий призван стимулировать определенный этап развития. По сравнению с работой по разработке написания "Учитывая, что я вошел в систему" ​​тривиально.

Когда что-то идет не так, зная, что вы должны войти в систему, является важной частью информации.

Другие вопросы по тегам