Capybara
Capybara/ClickLinkOrButtonStyle
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
是 |
否 |
2.19 |
2.20 |
检查按钮或链接点击的方法。
默认情况下,优先使用 click_link_or_button
或 click_on
。这些方法提供了测试和 HTML 之间的较弱耦合,允许更忠实地反映用户行为。
您可以设置 EnforcedStyle: strict
以优先使用 click_link
和 click_button
,但这已是一个弃用的设置。
Capybara/CurrentPathExpectation
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
启用 |
是 |
始终 |
1.18 |
2.0 |
检查 Capybara 的 current_path
上是否设置了任何期望。
应在 page
上使用 have_current_path
匹配器 来设置对 Capybara 当前路径的期望,因为它使用 Capybara 的等待功能,确保前面的操作(如 click_link
)已完成。
此 cop 在某些情况下不支持自动更正。
Capybara/MatchStyle
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
是 |
始终 |
2.17 |
- |
检查是否使用过时的样式方法。
示例
使用 assert_style
时
# bad
page.find(:css, '#first').assert_style(display: 'block')
# good
page.find(:css, '#first').assert_matches_style(display: 'block')
Capybara/NegationMatcher
Capybara/RedundantWithinFind
Capybara/特定操作
Capybara/特定查找器
Capybara/特定匹配器
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
是 |
否 |
2.12 |
- |
检查是否有 Capybara 提供的更具体的匹配器。
示例
# bad
expect(page).to have_selector('button')
expect(page).to have_no_selector('button.cls')
expect(page).to have_css('button')
expect(page).to have_no_css('a.cls', href: 'http://example.com')
expect(page).to have_css('table.cls')
expect(page).to have_css('select')
expect(page).to have_css('input', exact_text: 'foo')
# good
expect(page).to have_button
expect(page).to have_no_button(class: 'cls')
expect(page).to have_button
expect(page).to have_no_link('foo', class: 'cls', href: 'http://example.com')
expect(page).to have_table(class: 'cls')
expect(page).to have_select
expect(page).to have_field(with: 'foo')
Capybara/可见性匹配器
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
启用 |
是 |
否 |
1.39 |
2.0 |
检查 Capybara 查找器中的布尔可见性。
Capybara 允许您使用 :visible
选项查找与特定可见性匹配的元素。:visible
接受布尔值和符号作为值,但使用布尔值可能会产生意想不到的效果。visible: false
不会只查找不可见元素,而是查找可见和不可见元素。为了表达性和清晰度,请使用符号值之一,:all
、:hidden
或 :visible
。在 文档 中了解更多信息。
示例
# bad
expect(page).to have_selector('.foo', visible: false)
expect(page).to have_css('.foo', visible: true)
expect(page).to have_link('my link', visible: false)
# good
expect(page).to have_selector('.foo', visible: :visible)
expect(page).to have_css('.foo', visible: :all)
expect(page).to have_link('my link', visible: :hidden)