Cucumber ruby 如何使用 ParameterType 来转换给定的表达式?

Cucumber ruby how to use ParameterType to transform given expression?

我正在尝试使用 ParameterType,因为 Transform 已从 3.0 版的 cucumber 中删除 我具有以下功能以及步骤定义和参数类型。我的 ParameterType 是否有任何问题,因为它抛出如下错误:

专题文件:

Scenario: Learn how to write transformations
    When I print the date for today

步骤定义

When('I print the date for {today}') do |today|
  puts today
end

这是 ParameterType 我正在使用的:

ParameterType(
  name: 'today',
  regexp: /[\w]+/,
  transformer: Date.today
)

获取错误:

When I print the date for date
features/wb_test.feature:11
undefined method `map' for nil:NilClass (NoMethodError)
c:\jruby-9.2.7.0\bin\cucumber:23:in `
'
if Gem.respond_to?(:activate_bin_path)
load Gem.activate_bin_path('cucumber', 'cucumber', version)
else
gem "cucumber", version

如果上述步骤有任何错误,请告诉我。

当我运行你的代码时我得到这个错误:

  Scenario: Learn how to write transformations
    When I print the date for today           
      wrong number of arguments (given 1, expected 0) (ArgumentError)
      ./features/support/parameter_types.rb:16:in `block in <top (required)>'
      features/file.feature:15:in `When I print the date for today'

这表明transformer需要是一个函数。我通过将您的 ParameterType 定义更改为:

来让它工作
ParameterType(
    name: 'today',
    regexp: /[\w]+/,
    transformer: ->(str) {Date.today}
)