【发布时间】:2016-02-07 16:22:20
【问题描述】:
我有一个具有用户模型的应用程序,并且用户具有不同的角色。角色在内部表示为整数索引,但作为字符串呈现给用户。我还有一个辅助函数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。
我在谷歌上找到的大多数建议都是“不要那样做”,因为在后台调用函数违反了将 Cucumber 保持在 UI 级别的原则,但我看不到测试这种用户行为的方法Cucumber 不知道如何将角色名称映射到索引。当然,我可以在我的 Cucumber 支持文件之一中复制 access_level,但这违反了 DRY。那么应该我应该如何构造它以便能够在 Cucumber 中干净地测试它?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 cucumber capybara