2016-07-05 11 views
0

Ruby on Railsコードの統合テストでは、すべての学校がページに存在することを確認した後、US /カナダの学校では、正しい学校がページにあることを再度確認します。ページ分割による統合テスト

test "Can view and search schools" do 
visit logout_path 
visit schools_path 
School.all.each do |school| 
    page.must_have_content(school.name) 
end 

find(:xpath, '//*[@name="filter[USA]"]/..').click 
School.all.each do |school| 
    page.must_have_content(school.name) if school.country == 'Canada' 
    page.wont_have_content(school.name) if school.country == 'USA' 
end 

find(:xpath, '//*[@name="filter[USA]"]/..').click 
School.all.each do |school| 
    page.must_have_content(school.name) 
end 

find(:xpath, '//*[@name="filter[Canada]"]/..').click 
School.all.each do |school| 
    page.wont_have_content(school.name) if school.country == 'Canada' 
    page.must_have_content(school.name) if school.country == 'USA' 
end 
end 

問題は、今私は学校をページ分割しており、その学校のすべてが失敗したテストケースを作り、同じページ上に存在しないということです。学校が異なるページに広がっているにもかかわらず、テストケースが合格になるように統合テストを修正する必要があります。1ページに9つの学校があります。私は無駄にテストの最初の部分については、以下を試してみました:

visit logout_path 
school_found = 0 
per_page = 9 
visit schools_path 
School.all.each do |school| 
    page.must_have_content(school.name) 
    school_found += 1 
    if (school_found == per_page) 
    click_on('Next ›') 
    end 
end 

私はどこから始めれば手掛かりを持っていない他の部分について。

+2

。あなたがそうした場合、物事はお互いに関係しないでしょうし、私はあなたが心に持っている特定の機能をどのようにテストすることができるかというアイディアを得ていると確信しています。 – unused

答えて

0

質問に十分な情報がありません。私は使用していた宝石と写真を追加したはずです。また、これは、Q + Aサイトではあまりにも多くの質問を読み込んでいます。

これを行うには、9つの学校ごとに確認した後、ページ区切りセクションの[次へ]ボタンをクリックして学校をめくるだけです。米国とカナダの学校のみをチェックするには、それぞれアメリカまたはカナダの学校が見つかったときにカウントする必要があります。それぞれのケースの後、カウントを0にリセットし、次のテストに進みます。また、次のボタンをクリックしなければならなかった場合は、次のテストに進む前に、最初のボタンをクリックして開始ページに戻ります。あなたがそこに着いたかなりのシナリオだが、私はほとんどの人が一度にテストにつき1つのシナリオに固執することを教えてくれますと仮定し

test "Can view and search schools" do 

visit logout_path 

visit schools_path 
count = 0 
nextClicked = false 
select "Alphabetical", :from => "sort_by" 
School.all.order('name ASC').each do |school| 
    page.must_have_content(school.name) 
    count += 1 
    if count == 9 
    click_on("Next ›", :match => :first) 
    nextClicked = true if !nextClicked 
    end 
end 

click_on("« First", :match => :first) if nextClicked 
count = 0 
nextClicked = false 

find(:xpath, '//*[@name="filter[Canada]"]/..').click 
School.all.each do |school| 
    page.must_have_content(school.name) if school.country == 'USA' 
    page.wont_have_content(school.name) if school.country == 'Canada' 
    count += 1 if school.country == 'USA' 
    if count == 9 
    click_on("Next ›", :match => :first) 
    nextClicked = true if !nextClicked 
    end 
end 

click_on("« First", :match => :first) if nextClicked 
count = 0 
nextClicked = false 

find(:xpath, '//*[@name="filter[Canada]"]/..').click 
School.all.order('name ASC').each do |school| 
    page.must_have_content(school.name) 
    count += 1 
    if count == 9 
    click_on("Next ›", :match => :first) 
    nextClicked = true if !nextClicked 
    end 
end 

count = 0 
click_on("« First", :match => :first) if nextClicked 
nextClicked = false 

find(:xpath, '//*[@name="filter[USA]"]/..').click 
School.all.each do |school| 
    page.must_have_content(school.name) if school.country == 'Canada' 
    page.wont_have_content(school.name) if school.country == 'USA' 
    count += 1 if school.country == 'Canada' 
    if count == 9 
    click_on("Next ›", :match => :first) 
    nextClicked = true if !nextClicked 
    end 
end 

count = 0 
click_on("« First", :match => :first) if nextClicked 
nextClicked = false 

end 
1

これは、ページネーションのサイズを構成可能にすることでより適切に解決されるため、このテストでは、リスト全体のサイズより大きなサイズに変更し、すべてのページを1ページでチェックし、ページネーションが正しく行われていることをまだ確認できます

関連する問題