黄瓜:如何在不同的变换中使用相同的正则表达式?

时间:2012-07-01 13:33:38

标签: cucumber transform

我有以下转换:

Transform /^"([^"]+)" Phase$/ do |name|
  # Returns the phase named 'name',
  # or raises an exception if it doesn't exist
end

使用步骤定义,如下所示:

Then /("(?:[^"]+)" Phase) should do something/ do |phase|
  # Should fail if the specified phase doesn't exist
end

我还有以下步骤定义,它使用相同的"([^"]+)" Phase模式:

Given /("([^"]+)" Phase) follows ("([^"]+)" Phase)/ do |pre, post|
  # Should create the specified phases 
end

如果指定的阶段不存在,我不希望步骤定义失败。我想改为创建阶段。

我想创建一个转换器,它将为我创建一个阶段,以便稍微干掉步骤定义,但我不能这样做,因为我已经有上面提到的具有完全相同的正则表达式的转换。

基本上,我想创建一个阶段,如果它是Given步骤,如果不是则加注失败。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

如果正则表达式相同,那么您实际上没有选择来区分行为。确定你是否可以<{1}}步骤可能,但即使如此,这也是一些非常隐蔽的魔法,有可能让未来的读者和情景作者感到惊讶...

最简单,最有意义的方法是在步骤语言中明确说明短语的性质,然后你可以有2个明确分开的变换,例如。

Given