Ruby Cucumber跨文件进行转换

Ruby Cucumber跨文件进行转换,ruby,testing,cucumber,transform,Ruby,Testing,Cucumber,Transform,我在features/support/transforms/date_transform.rb中有两个转换 CAPTURE_YEAR = Transform /^(20\d{2})$/ do |year| year.to_i end CAPTURE_QUARTER = Transform /^(first|second|third|fourth)$/ do |quarter| {first: 1, second: 2, third: 3, fourth: 4}[quarter.to

我在features/support/transforms/date_transform.rb中有两个转换

CAPTURE_YEAR = Transform /^(20\d{2})$/ do |year|
  year.to_i
end

CAPTURE_QUARTER = Transform /^(first|second|third|fourth)$/ do |quarter|
    {first: 1, second: 2, third: 3, fourth: 4}[quarter.to_sym]
end
CAPTURE_NUMBER = Transform /^\d+$/ do |number|
  number.to_i
end
我在features/support/transforms/number\u transform.rb中有另一个转换

CAPTURE_YEAR = Transform /^(20\d{2})$/ do |year|
  year.to_i
end

CAPTURE_QUARTER = Transform /^(first|second|third|fourth)$/ do |quarter|
    {first: 1, second: 2, third: 3, fourth: 4}[quarter.to_sym]
end
CAPTURE_NUMBER = Transform /^\d+$/ do |number|
  number.to_i
end
我意识到年份和数字1几乎相同,但我不想简单地去掉
CAPTURE\u year
变量。我想做:

CAPTURE_YEAR = CAPTURE_NUMBER
但不幸的是,
CAPTURE\u NUMBER
在我处理的文件中不存在。知道如何在cucumber中正确包含其他变换吗?我应该明确要求每个转换文件中的文件,对吗


提前谢谢

Cucumber只需加载
support
目录中的任何文件即可。它似乎是按字母顺序加载的(但我不知道这是一种有文档记录的/可靠的行为-也就是说,我不想只是重命名文件来绕过它)

如果您试图在加载包含
CAPTURE\u NUMBER
的文件之前声明
CAPTURE\u YEAR
,则会失败,正如您所发现的那样

我认为最好的选择是在尝试使用其中声明的常量之前,显式地要求
number\u转换
文件。就我个人而言,在文件中声明它所依赖的文件并没有问题

您也可以在
env.rb
中需要它,因为它会在任何其他支持文件之前被解析,如果您的许多其他文件也依赖它,那么它可能是一个更好的选择