我在Ruby中使用Cucumber。
我有一个ParameterType,它可以识别货币值并将其解析为BigDecimal,例如“考虑到成本是25.50美元。”
我想对表格做类似的事情,即与模式匹配的任何东西都应该自动转换,例如:
Given these products:
| item | cost |
| foo | $10.50 |
| bar | $5.25 |
我在文档中找不到任何有关此的内容。有可能吗?
编辑:Step Argument Transforms似乎曾经对此提供支持,但是在黄瓜3中已将其删除:
通过以“ table:”为前缀的列标题的逗号分隔列表来匹配表转换
答案 0 :(得分:0)
在步骤定义中,确保遍历表中的所有项目并调用步骤Given the cost is XXX
这是步骤def中的示例逻辑
And(/^Given these products:$/) do |table|
# iterate through table
table.hashes.each do |product|
# you can get the product details here
item = product['item']
cost = product['cost']
# you can use the item if you want to select or any operation
# calling the Given the cost is xx step (here calling the step that already you implemented)
step("Given the cost is #{cost}")
end
end
答案 1 :(得分:0)
2021 年 8 月
根据 this Github Issue: 在他们用 ParameterTypes 替换 Transforms 之后,不再可能转换数据表。 “官方”解决方法似乎是创建一个辅助方法:(原始 #comment):
module Helpers
def custom_transform(table)
table.map_headers! { |header| header.downcase.to_sym }
table.hashes.each do |row|
# ...
end
table
end
end
World(Helpers)
然后,在您的步骤定义中:
Given /a step that takes a table:/ do |table|
expand_placeholders_in table
# ...
end