1

私はキュウリに不慣れで、次のステップの定義をどのように整理できるかについての提案をお願いしたいと思います。

Feature: Manage events
  In order to Manage events
  Organizer
  wants to create new events

  Background:
    Given I am logged in as organizer

  Scenario: Publish new event
    Given I am on the new event page
    When I fill in "Title" with "Rails event"
    And I fill in "Start at" with "2012-5-4"
    And I fill in "End at" with "2012-5-5"
    And I fill in "Description" with "Bla bla"
    And I check "Published"
    And I press "Create Event"
    Then I should see "Rails event"

あいまいさを生み出すステップの定義は次のとおりです。

    When /^I fill in "Start at" with "(.*?)-(.*?)-(.*?)"$/ do |year, month, day|
      enter_date(:event_start_at, year, month, day)
    end

    When /^I fill in "End at" with "(.*?)-(.*?)-(.*?)"$/ do |year, month, day|
      enter_date(:event_end_at, year, month, day)
    end

    When /^I fill in "(.*?)" with "(.*?)"$/ do |name, value|
      fill_in name, :with => value
    end

    private
    def enter_date(id, year, month, day)
        select year, :with => "#{id}_1i"
        select month, :with => "#{id}_2i"
        select day, :with => "#{id}_3i"
    end

何が起こるかというと、最初の2つの定義が最後の定義とあいまいです。しかし、開始日と終了日については、私はそれらを異なる方法で処理する必要があります。私が知っているのは、キュウリにはその問題を解決する--guessオプションがあるということです。しかし、これはベストプラクティスですか?

4

2 に答える 2

2

次のようなことをしてみませんか:

When /^I fill in "([^"]*)" with "([^"]*)"$/ do |name, value|
  case(name)
  when "Start at" then
    parts = value.split(/-/)
    enter_date(:event_start_at, parts[0], parts[1], parts[2])
  when "End at" then
    parts = value.split(/-/)
    enter_date(:event_end_at, parts[0], parts[1], parts[2])
  else
    file_in name, :with => value
  end
end

(または、これらの行に沿ってテキストボックスに入力されたものなので、そのまま正しく実行されるかどうかはわかりません。)

于 2012-05-22T04:32:34.697 に答える
0

「Start at」と「End at」を囲む引用符を取り除きます。それらはあなたの最後のステップと一致しなくなります。引用符は多くのあいまいさを引き起こすことがわかったので、通常、ファイル名やパスにスペースが含まれている場合にのみ引用符を使用します。疑問がある場合は、Cucumber の多くの当て推量を削除するため、引用符を削除することがベスト プラクティスであることがわかりました。

于 2012-05-22T13:16:11.843 に答える