2016-07-05 113 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

这可以通过使分页大小可配置来更好地解决,因此对于此测试,测试可以将其修改为大于总列表大小的大小,并检查一页上的所有内容,并在测试后重置它,以便进一步测试仍然可以检查分页是否正确发生