ruby-on-rails - Capybara 测试是否看到一个字段,但两个字段具有相同的开头,这会导致问题
问题描述
在我的 Ruby on Rails 应用程序上,我想运行 Capybara 测试。有两种不同的用户组:intern_user
和extern_user
。有一个包含两个输入字段的表单:'Comment'
和'Comment for Interns'
。extern_user
应该看到两个字段,应该intern_user
只看到'Comment for Interns'
。
在intern_user
我想测试以下功能的情况下:And I do not see the Comment field
对于 .rb 文件,我有以下代码:
Then(/^I (do not )?see the comment field$/) do |not_visible|
m = have_field('Comment')
x = expect(page)
not_visible ? x.not_to(m) : x.to(m)
end
但是Capybara只是寻找文本的开头,并且因为有一个字段被称为'Comment for Interns'
测试失败。它的处理方式就像用户看到了该'Comment'
字段,但实际上并没有,它只看到另一个字段,名称中具有相同的开头。
如何设置,Capybara 应该寻找一个字段,该字段完全具有给定的名称并且其中没有更多字符?
解决方案
默认情况下,Capybara 对标签内容中的定位器字符串进行子字符串匹配。要进行精确的定位器匹配,您应该能够通过该:exact
选项
m = have_field('Comment', exact: true)
然后应该只对字段的标签内容进行完全匹配。
推荐阅读
- javascript - Promises:如何返回具有其他错误处理程序的 Promise
- jsonschema - json-schema 具有类型 x 的附加属性和至少一个
- r - 在控制台与 R 降价单元中运行时调度不同的打印方法?
- exchange-server - 如何创建基于域的 Exchange 2013/16 邮件流规则
- msix - 如何从命令行构建 MSIX
- laravel - 如何向具有不同会员角色的会员发送通知?
- asp.net-core-mvc - 如何在 vs2019 MVC Core 3.1 的包管理器控制台中搭建控制器?
- sql - Hive 中的转置数组
- sql - SQL:添加缺失的日期和值
- function - 递归 Haskell 函数,但只执行一次