Cucumber 3.0移除Cucumber::Ast::Table,旧API测试代码适配方案咨询
解决Cucumber 3.0中
Cucumber::Ast::Table移除后的代码替换问题 嘿,我之前升级Cucumber到3.x版本时也碰到过这个问题,给你分享下怎么修改这段代码:
首先得明确:Cucumber 3.0正式移除了Cucumber::Ast::Table,取而代之的是Cucumber::MultilineArgument::DataTable,而且原来的rows_hash方法在新类里是保留的,所以我们只需要修改类型判断的部分就行。
修改后的代码
unless input.nil? if input.is_a?(Cucumber::MultilineArgument::DataTable) request_opts[:params] = input.rows_hash else request_opts[:input] = ERB.new(input).result(binding) end end
关键改动说明
- 类型判断更新:把
input.class == Cucumber::Ast::Table改成input.is_a?(Cucumber::MultilineArgument::DataTable),用is_a?比直接判断类更灵活,能兼容可能的子类情况 - 核心逻辑保留:
rows_hash方法在新的DataTable类中依然存在,所以参数赋值的逻辑完全不需要变动 - 版本兼容性:这个修改不仅适用于Cucumber 3.x,也能兼容后续的4.x、5.x等版本
内容的提问来源于stack exchange,提问作者Petran
相关产品推荐
相关产品推荐

