在黄瓜步骤定义中获取引号内的所有项目

时间:2013-08-08 01:15:41

标签: ruby regex cucumber gherkin

我有一个字符串:I attach "dog.png", "cat.png", and "alphabet.doc"

这就是我想要匹配的内容:

1. dog.png
2. cat.png
3. alphabet.doc

我可以通过"([^"]*)"执行此操作,但是,字符串必须以“我附加”开头

这是我在步骤定义中的当前规则:/^I attach "([^"]*)"$/但这不起作用。

这是黄瓜/小黄瓜,我可以用scan来解决问题,但我不认为你可以在cuke / gherkin中使用它?

有关如何执行此操作的任何建议吗?

由于

2 个答案:

答案 0 :(得分:2)

这似乎是使用#And别名的好地方。

Given I attach dog.png
  And I attach cat.png
  And I attach alphabet.doc
...

或者,您可以使用data tables轻松实现多行参数

答案 1 :(得分:2)

如果您想在一个步骤中捕获可变数量的输入,我认为最好的选择是使用scan。虽然您无法在步骤名称中直接使用扫描,但您可以捕获完整的文件列表,然后解析捕获的结果。

尝试以下步骤定义:

Given /^I attach (.*)$/ do |file_list|
  files = file_list.scan(/"(.+?)"/).flatten
  #=> ["dog.png", "cat.png", "alphabet.doc"]
end

这将创建一个要附加的文件数组。它可以处理1到无限的文件。