确定黄瓜的变换范围

Chr*_*man 5 ruby cucumber

我正在使用一大堆已经存在的黄瓜功能,并添加了额外的测试.对于那些新的测试,我也试图使用变换来简化重复性任务.

如何在不破坏现有测试的情况下添加转换?我已经为捕获组添加了上下文,但由于上下文来自与预先存在的测试相同的业务域,因此它很容易最终匹配.

有没有办法只对某些步骤应用变换?

gra*_*aza 2

您可以使用标签和 Before 过滤器在 World 中设置实例变量。然后,您的转换就可以使用它,以便它可以执行特定于标签的转换。例如,如果您只想在存在 @hook 标签时转换整数:

Transform /(\d+)/ do |num|
  if @hook
    num.to_i
  else
    num
  end
end

Before('@hook') do
  @hook = true
end
Run Code Online (Sandbox Code Playgroud)

为每个场景创建一个新世界,并调用之前过滤器。因此 @hook 将为每个场景重置。