Mis*_*hko 7 transform cucumber
我有以下变换:
Transform /^"([^"]+)" Phase$/ do |name|
# Returns the phase named 'name',
# or raises an exception if it doesn't exist
end
Run Code Online (Sandbox Code Playgroud)
它适用于步骤定义,如下所示:
Then /("(?:[^"]+)" Phase) should do something/ do |phase|
# Should fail if the specified phase doesn't exist
end
Run Code Online (Sandbox Code Playgroud)
我还有以下步骤定义,它使用相同的"([^"]+)" Phase模式:
Given /("([^"]+)" Phase) follows ("([^"]+)" Phase)/ do |pre, post|
# Should create the specified phases
end
Run Code Online (Sandbox Code Playgroud)
如果指定的阶段不存在,我不希望步骤定义失败.我想创建阶段.
我想创建一个转换,它将为我创建一个阶段,以便稍微干掉步骤定义,但我不能这样做,因为我已经拥有上面提到的具有完全相同的正则表达式的转换.
基本上,如果它是一个Given步骤,我想创建阶段,如果不是,我想提出失败.
有任何想法吗?
如果正则表达式相同,那么您实际上没有办法区分行为。确定你是否处于某个Given步骤中是可能的,但即使是这样,这也将是一些非常隐藏的魔法,有可能让未来的读者和场景作者感到惊讶......
最简单、最能揭示意图的方法是在步骤语言中明确说明短语的性质,然后您可以有 2 个清晰分开的转换,例如
EXISTING_PHASE = Transform /^existing Phase "([^"]+)"$/ do |phase|
# raise error if it doesn't exist
end
UNEXISTING_PHASE = Transform /^unknown Phase "([^"]+)"$/ do |phase|
# create the phase if it doesn't exist
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |