У меня есть приложение с моделью пользователя, и пользователи имеют разные роли. Роли представлены внутри как целочисленные индексы, но представлены пользователю как строки. У меня также есть вспомогательная функция access_level
(в application_controller.rb
- это подходящее место для нее?), которая принимает либо целочисленный индекс, либо строковое представление и возвращает хэш множества информации о роли (включая строковое представление и индекс, так что это удобный способ преобразования между ними). Если это имеет значение, access_level
, в свою очередь, зависит от определений ролей, определенных в файле в config\initializers
.
Поскольку интерфейс, представляемый пользователю, зависит от роли, в моих тестах есть много вещей, таких как Given I have the role of administrator
и тому подобное. Я пытаюсь создать пользователя с FactoryGirl.create(:user, role: access_level(role).index)
, но не могу заставить Cucumber увидеть access_level
.
Большинство советов, которые я нахожу в Google, говорят «не делайте этого», потому что вызов функций за кулисами нарушает принцип сохранения Cucumber на уровне пользовательского интерфейса, но я не вижу способа проверить это поведение пользователя без ведома Cucumber. как сопоставить имена ролей с индексами. Конечно, я мог бы продублировать access_level
в одном из файлов поддержки Cucumber, но это нарушает DRY. Итак, как следует структурировать это так, чтобы можно было чисто протестировать его в Cucumber?