2012-01-14 13 views
1

データベースの変更を記述するステップを定義するベストプラクティスは何ですか?例えばキュウリ - レール|データベースの変更を記述するステップを定義する

、私は次のシナリオを持っている:

Scenario: Creating a user 
    Given I am on the users creation page 
    When I fill in "Name" with "Chandler Bing" 
    And I click "Create User" 
    Then the user should be added into the database 

どのように私はより良い最後のステップを定義することができます

Then /^the user should be added into the database$/ do 
    User.count.should eq 1 
end 

またはいくつかの他、巧妙な方法がありますか?

ありがとうございました。

答えて

0

多くのデータベースステップを定義している宝石を使用することをお勧めします。本当にうれしいです。

0

私はこれを2つの方法で変更します。まず、新しいバージョンのCucumberではWebのステップが廃止されました。そのために、「私が「ああ」と「ああ」で記入すると、今はお勧めできません。第二に、データベース内のユーザー数をテストすることは、完全な画像を記述することではありません。あなたは、あなたが作成したものであることを知りたいと思います。つまり、同じ名前を付け加えて、他のプロパティを追加することになります。

Given /^I create the following users:$/ do |table| 
    table.hashes.each do |row| 
    visit new_user_path 
    fill_in 'Name', with: row['name'] 
    click_button 'Create User' 
    end 
end 

Then /^I should have the following users:$/ do |table| 
    # Ensure users with same name are taken into account 
    table.hashes.size.should == User.count 

    table.hashes.each do |row| 
    user = User.find_by_name(row['name']) 
    user.should_not be_nil 
    end 
end 

をこのアプローチについての注意事項:

Scenario: Creating a user 
    When I create the following users: 
    | name   | 
    | Chandler Bing | 
    | Some Other Guy | 
    Then I should have the following users: 
    | name   | 
    | Chandler Bing | 
    | Some Other Guy | 

その後、あなたのステップの定義では、あなたがウェブのステップは何をしていただろう:ステップのこれらのタイプを処理するために、私のようなシナリオは自分が書い見つけます:

  1. これにより、ステップを再利用できるようになります。否定的なパスをテストし、無効なユーザーを追加する場合は、新しいステップを作成する必要はありません。
  2. フィーチャファイル内のボイラープレートコードが少なくなりました。ステークホルダーがいる場合は、手順を読みやすくする必要があります。
  3. あなたは実際に私が個人的にウェブのステップで当然のことをしたことを知っているカピバラを学ぶでしょう。
  4. コードの数がはるかに少ないユーザーを追加できます。
+0

感謝詳細な答えは、Beerlington。何らかの理由であなたの提案は私には判りにくいようです。同じ名前の人が複数いる場合はどうなりますか?この場合、ユーザーは私が作成したものだが、同じ名前のユーザーではないことをどのように知ることができますか?あなたのソリューションは、モデル属性の一意性に大きく依存します。 – Shamaoke

+0

大きな質問!良いテストとは、テストシナリオに自信を持っていることです。これは単にキュウリのシナリオを書く別の方法を示しています。テーブルのサイズがデータベースのレコード数と等しいことを確認するThenステップに追加のアサーションを追加することを止めるものは何もありません。私はこれがどのように機能するかの例を示すために私の答えを更新します。 –

0

としてはピクルスが、あなたは間違いなくあなたのテストの作品にそれを使用する必要があり、本当に素晴らしいです、Skydreamerを言及することができます。このようなBeerlingtonたちと共有ショートコード、:

Feature: Creating a user 
    Scenario: Successful .... 
    Given a user exists with name: "Said" 
    .............. 
    .............. 
関連する問題