Ruby on Rails: пользовательские определения Cucumber для paths.rb - PullRequest
1 голос
/ 21 июня 2011

Я пытался изучить BDD путь для разработки и только что посмотрел урок RailsCasts для Cucumber.Там я видел подход для описания некоторых действий, таких как:

When I go to the list of articles
Then I should see "Pizza"

И, как я понимаю, все эти конструкции «я иду» и «я должен видеть» где-то жестко закодированы.Так что в paths.rb я могу написать:

def path_to(page_name)
case page_name

when /the list of articles/
  articles_path

И он в следующий раз распознает этот путь автоматически.И «я должен видеть» имеет ту же особенность.

Итак, вопрос: есть ли способ заменить те конструкции «я иду» и «я должен видеть» другим языком или пользовательскими последовательностями?Например:

When I constantly visiting the list of articles
Then I have to observe text "Pizza" 

1 Ответ

2 голосов
/ 21 июня 2011

Конечно,

Cucumber использует шаги в web_steps.rb, чтобы сделать вызов отображению. Похоже:

When /^(?:|I )go to (.+)$/ do |page_name|
    visit path_to(page_name)
end

Then /^(?:|I )should see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector|
  with_scope(selector) do
    if page.respond_to? :should
      page.should have_content(text)
    else
      assert page.has_content?(text)
    end
  end
end

Итак, я бы написал следующий шаг, который перенаправляет на стандартные web_steps ...

#step_definitions/my_steps.rb

When /^(?:|I )constantly visiting (.+)$/ do |page_name|
   When %{I go to #{page_name}}
end

Then /^(?:|I )have to observe text "([^"]*)" do |text|
   Then %{I should see "#{text}"}
end 

Надеюсь, это поможет.

...