2016-07-05 110 views
0

我對我的Ruby on Rails代碼進行了以下集成測試,該代碼檢查以確保所有學校都存在於頁面上,然後將它們過濾爲僅具有US /加拿大的學校,並再次確保正確的學校在網頁上。分頁集成測試(Ruby on Rails)

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 

的問題是,我現在已經分頁學校,所以所有的學校都不能在同一網頁上,使測試案例失敗。我需要修改集成測試,以便通過測試用例,即使學校現在分佈在不同的頁面上,每頁有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並繼續進行下一個測試。另外,如果您確實需要點擊下一步按鈕,然後點擊第一個按鈕返回到起始頁面,然後再進行下一個測試。

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

這可以通過使分頁大小可配置來更好地解決,因此對於此測試,測試可以將其修改爲大於總列表大小的大小,並檢查一頁上的所有內容,並在測試後重置它,以便進一步測試仍然可以檢查分頁是否正確發生