繁体   English   中英

黄瓜红宝石 - 黄瓜表达

[英]Cucumber Ruby - Cucumber Expressions

在Cucumber Ruby中尝试一些新东西,我遇到了他们的Cucumber表达式。

我试过注册参数:

require 'cucumber/cucumber_expressions/parameter_type'
require 'cucumber/cucumber_expressions/parameter_type_registry'

Cucumber::CucumberExpressions::ParameterTypeRegistry.new.define_parameter_type(Cucumber::CucumberExpressions::ParameterType.new(
    'optional_not',
    String,
    /n't| not|/,
    lambda {|s| String.new(s)}
))

Cucumber::CucumberExpressions::ParameterTypeRegistry.new.define_parameter_type(Cucumber::CucumberExpressions::ParameterType.new(
    'string_in_double_quotes',
    String,
    /"[^"]*"/,
    lambda {|s| String.new(s)}
))

但是,当我有一个步骤定义,如:

Given "{string_in_double_quotes} does{optional_not} work" do |thing, invert|
   invert = invert.gsub(' ', '')
   if invert == 'n\'t' or invert == 'not'
      # Something here
   else
      # Something here
   end
end

它不匹配Given "the expression" does workGiven "the expression" does not work - 它应该是什么,并且简单地返回一个步骤片段

有谁知道我做错了什么?

编辑

事实证明,基本的“int”黄瓜表达式也不起作用,应该内置。

Given "I want {int} potatoes" do |number|
 puts "#{number} potatoes"
end

不匹配And I want 7 potatoes ,作为一个例子。

使用:

  • 黄瓜v3.0.0.pre.1
  • 黄瓜表达式v3.0.0
  • ruby v2.4.1

黄瓜表达式可从v3.0.0获得(参见: https//github.com/cucumber/cucumber-ruby/issues/1002#issuecomment-332734877 )。 但是,添加自定义参数类型目前似乎没有记录,我不得不深入挖掘一下如何去做(参见Cucumber::Glue::Dsl )。

在我的情况下,我想添加一个date参数类型以匹配格式YYYY-MM-DD ,所以我在support目录中创建了一个新文件parameter_types.rb (我正在使用Cucumber来测试Rails应用程序),其中包含以下内容:

ParameterType name:             'date',
              type:             Date,
              regexp:           /\d{4}-\d{2}-\d{2}/,
              transformer:      ->(str) { Date.parse(str) },
              use_for_snippets: true

ParameterType是一个类似AfterBefore等的方法,可用于定义钩子。 您可以通过将它们附加到同一文件来添加更多参数类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM