Ich habe den folgenden Integrationstest für meinen Ruby on Rails-Code, der überprüft, ob alle Schulen auf einer Seite vorhanden sind, und sie dann filtert, um nur US/Kanadische Schulen, und stellt wieder sicher, dass die richtigen Schulen auf der Seite sind.Integrationstest mit Paginierung (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
Das Problem ist, dass jetzt habe ich die Schulen paginierte, und so alle Schulen sind nicht auf der gleichen Seite, den Testfall machen scheitern. Ich muss den Integrationstest modifizieren, damit die Testfälle bestehen, obwohl die Schulen jetzt auf verschiedenen Seiten verteilt sind, mit 9 Schulen pro Seite. Ich habe versucht, die folgenden für den ersten Teil des Tests ohne Erfolg:
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
Für die anderen Teile, die ich habe keine Ahnung, wo ich anfangen soll.
Das ist ein ziemliches Szenario, das Sie dort haben, aber ich nehme an, die meisten Leute werden Ihnen sagen, dass Sie pro Test ein Szenario gleichzeitig einhalten müssen. Wenn Sie dies tun, werden sich die Dinge nicht aufeinander beziehen, und ich bin ziemlich sicher, dass Sie dann eine Vorstellung davon bekommen, wie Sie die spezifische Funktion, die Sie im Sinn haben, testen können. – unused