在ruby / cucumber中加载顺序 - '已经初始化常量'

时间:2015-12-03 17:39:26

标签: ruby load cucumber

我正在寻找一种干净的方法来避免黄瓜功能目录中的这个问题:

├── config
│   └── cucumber.yml
└── features
    ├── login_screen
    │   ├── wondering.feature
    │   └── pondering.feature
    ├── step_definitions
    └── support
        ├── a_module.rb
        └── hooks.rb
        └── z_module.rb

Cucumber默认情况下会加载feature / support中的所有内容,因此保留一些模块或类以帮助我在support文件夹中进行测试可能会产生与加载顺序的冲突 - 当hooks.rb运行时a_module.rb已加载,但是z_module不是可用。我可以使用require_relative,但这会导致warning: already initialized constant用于a_module中的内容。

有没有一种巧妙的解决方法,不依赖于根据拼写选择性地调用require_relative文件?我可以把它们放在一个单独的lib文件夹中,用_或......

作为前缀

1 个答案:

答案 0 :(得分:0)

我倾向于根据加载顺序0_a_module等命名它们,或者在开头的单个文件中按特定顺序要求所有剩余文件,例如00_load_order

support/
  00_module_a.rb
  01_module_z.rb

support/
  00_load_order.rb
  ...

# load_order.rb
require 'module_a'
require 'module_b'