Cucumber: многострочные аргументы с использованием метода step внутри определения шага - PullRequest
2 голосов
/ 23 января 2012

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

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

Как правильно передать многострочный аргумент другому шагу, используя step внутри определения шага?

Редактировать: Исходный код всегда удобен.Я обнаружил, что подпись для step является def step(name, multiline_argument=nil).Suggestive.К сожалению, однако,

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 голосов
/ 24 января 2012

Это не совсем то, что я искал, но чтение исходного кода показывает, что работает следующее:

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