gpt4 book ai didi

testing - 如何使用 RSpec 检查页面中有多少个特定的 HTML 元素?

转载 作者:行者123 更新时间:2023-11-28 20:04:01 24 4
gpt4 key购买 nike

在 Rails 4 功能规范中,使用 RSpec 3 和 Capybara,如果页面中存在一定数量的特定标签,我该如何断言?

我试过:

expect(find('section.documents .document').count).to eq(2)

但是不行,说:

Ambiguous match, found 2 elements matching css "section.documents .document"

此外,在功能规范中测试诸如 View 中使用的标签和类的种类之类的特定内容是好主意还是坏做法?

最佳答案

使用find 的问题在于它旨在返回单个匹配元素。要找到所有匹配的元素,然后可以对其进行计数,您需要使用 all:

expect(all('section.documents .document').count).to eq(2)

但是,这种方法没有使用 Capybara 的等待/查询方法。这意味着如果元素是异步加载的,断言可能会随机失败。例如,all 检查存在多少元素,元素完成加载,然后断言将失败,因为它将 0 与 2 进行比较。相反,最好使用 : count 选项,等待指定数量的元素出现。

expect(all('section.documents .document', count: 2).count).to eq(2)

此代码中有一些冗余,断言消息会有点奇怪(因为会有异常而不是测试失败),所以最好也切换到使用 have_selector:

expect(page).to have_selector('section.documents .document', count: 2)

关于testing - 如何使用 RSpec 检查页面中有多少个特定的 HTML 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25527879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com