首页 > 解决方案 > 尝试将 Ruby Cucumber 转换代码更改为 Cucumber 3.0.0 替换

问题描述

我最近在这个页面上发现了这个用于设置 ruby​​、cucumber 和 capybara 的旧项目: jonathanchrisp/capybara-cucumber-ruby-kickstarter

通过在 support/env.rb 中添加以下行,我能够修复一些运行时错误

require 'capybara/dsl'

但是,每当我运行“黄瓜”来运行代码时,它总是会失败

undefined method `open_google_maps' for "google maps":String (NoMethodError)

我认为问题在于 features/step_definitions/transforms.rb 中的“转换”代码在黄瓜 3.0.0 中已被弃用。我正在查看的代码已经超过 3 年了,所以我不确定原作者是否还会维护它。我确实联系了他。同时,我想知道是否有 Rub/Cucumber 专家可以告诉我更改旧转换代码的正确方法是:

Transform(/^google maps$/) do |impersonator|
  google_maps
end

Transform(/^the user$/) do |impersonator|
  @current_user
end

Transform(/^a anonymous user$/) do |impersonator|
  a_anonymous_user
end

在黄瓜 3.0.0 及更高版本中工作的东西。

标签: rubycucumbercapybara

解决方案


转换已从 Cucumber 3 中删除,您需要切换到使用ParameterTypes. 如何做到这一点记录在https://cucumber.io/blog/2017/09/21/upgrading-to-cucumber-3的“升级到 Cucumber 3”博客文章中。

对于您上面的第一个转换,它将类似于

ParameterType(
  name: 'GoogleMaps'
  regexp: /google maps/,
  transformer: -> (_) { google_maps }
end

推荐阅读