我试图编写一个符合以下相似步骤并捕获参数的步骤:
第1步:And I delete the filter(s) using the "UI"
第2步:Then I delete the filter(s) using the "API" for "doc-browser" context
第3步:I delete the filter(s) using the "API" for "doc-browser" context with user "file_user2"
我不想创建3个单独的步骤,它们都以I delete the filter using the #{arg}
开头,最后2个只是在那里延伸。
我认为这将实现它:
And(/^I delete the filter\(s\) using the "([^"]*)"(?: for "([^"]*)" context| with user "([^"]*)")?/) do |delete_method, context, user|
case delete_method
when 'API'
if user.nil?
SearchFilters.new.delete_global_local_filters(delete_method, api_context_val: context)
else
SearchFilters.new.delete_global_local_filters(delete_method, { api_context_val: context, username: user })
end
when 'UI'
SearchFilters.new.delete_global_local_filters(delete_method, filter_name: @filter_name)
end
end
但是,我没有抓住我的用户名。
是否有可能完成一个步骤定义,捕获所有3个变体并仍然捕获我的论点?
答案 0 :(得分:1)
只需复制我的邮件列表答案,以防其他人对此问题感兴趣。
我知道你不想使用三个不同的步骤,但在这种情况下你真的应该因为
这是一个明显的例子,一点点的重复是一个值得为更简单的实现付出的代价。
使用正则表达式和params减少步骤定义的数量通常是一种反模式。
一切顺利
安德鲁