黄瓜跨文件转换

时间:2011-11-08 19:12:40

标签: 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_sym]
end

我在features / support / transforms / number_transform.rb

中有另一个转换
CAPTURE_NUMBER = Transform /^\d+$/ do |number|
  number.to_i
end

我意识到年份和数字几乎相同,但我不想简单地删除CAPTURE_YEAR变量。我想这样做:

CAPTURE_YEAR = CAPTURE_NUMBER

但不幸的是,我正在使用的文件中不存在CAPTURE_NUMBER。知道如何在黄瓜中正确包含其他变换吗?我应该明确要求每个转换文件中的文件对吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

Cucumber只会加载support目录中的所有文件。它似乎按字母顺序加载它们(但我不知道这是一个记录/可靠的行为 - 即我不想重命名文件来绕过它)。

如果您在加载包含CAPTURE_YEAR的文件之前尝试声明CAPTURE_NUMBER,那么它将会失败,如您所发现的那样。

我认为您最好的选择是在尝试使用其中声明的常量之前明确要求number_transform文件。就个人而言,我在文件中声明它所依赖的文件时没有问题。

您也可以在env.rb内部要求它,因为它会在任何其他支持文件之前被解析,如果您的许多其他文件也依赖它,则可能是更好的选择。

相关问题