黄瓜:在步骤定义中使用“步骤”方法的多行参数

时间:2012-01-23 14:13:26

标签: ruby-on-rails-3.1 cucumber factory-bot

factory_girl黄瓜帮手很酷。我喜欢这个有用:

Given the following users exist:
  | Name | Email            |
  | Alan | alan@example.com |
  | Bob  | bob@example.com  |

但我无法弄清楚如何在步骤定义中调用它们。例如:

Given /the usual users exist/ do
  step "the following users exist:
    | Name | Email            |
    | Alan | alan@example.com |
    | Bob  | bob@example.com  |"
end

...抛出Your block takes 1 argument, but the Regexp matched 0 arguments. (Cucumber::ArityMismatchError)

在步骤定义中使用step将多行参数传递给另一个步骤的正确方法是什么?

修改 源代码总是很方便。我发现step的签名是def step(name, multiline_argument=nil)。暗示。可悲的是,

step "the following users exist", "
    | Name | Email            |
    | Alan | alan@example.com |
    | Bob  | bob@example.com  |"

也因undefined method 'hashes' for #<Cucumber::Ast::DocString:0xa9bf6f4> (NoMethodError)而失败。我仍然想知道它应该如何运作。

然而,有一线希望。我找到了另一个函数steps,它是def steps(steps_text),并且有效。见答案。

1 个答案:

答案 0 :(得分:-1)

这不是我想要的,但阅读源代码后会发现以下情况:

Given /the usual users exist/ do
  steps "Given the following users exist:
    | Name | Email            |
    | Alan | alan@example.com |
    | Bob  | bob@example.com  |"
end