[英]Rails testing assert_select vs assert_selector
据我了解, assert_select
是一种 Capybara 方法,用于测试 HTML <select>
元素的 state,而assert_selector
用于测试任何 HTML 元素及其内部文本的存在。
那么,为什么:
assert_select "h1", "Foobar"
工作,当h1
不是<select>
元素时? Rails 指南在这里似乎不一致。
你可能想要:
assert_selector "h1", text: "Foobar"
这看起来像是对术语的一些误解。
CSS选择器是用于选择要设置样式的元素的模式。 assert_select
用于选择器测试(不仅用于<select>
元素)。
您的问题中有链接到Rails指南。 从那里 :
assert_select
方法允许您使用简单但强大的语法查询响应的HTML元素。
assert_select
有两种形式:
assert_select(selector, [equality], [message])
确保通过选择器在所选元素上满足相等条件。 选择器可以是CSS选择器表达式(String)或具有替换值的表达式。
assert_select(element, selector, [equality], [message])
通过从元素开始的选择器确保所有选定元素满足相等条件(Nokogiri::XML::Node or Nokogiri::XML::NodeSet
实例)Nokogiri::XML::Node or Nokogiri::XML::NodeSet
)及其后代。例如,您可以使用以下命令验证响应中title元素的内容:
assert_select 'title', "Welcome to Rails Testing Guide"
您还可以使用嵌套的
assert_select
块进行更深入的调查。在以下示例中,
li.menu_item
的内部assert_select
在外部块选择的元素集合中运行:assert_select 'ul.navigation' do assert_select 'li.menu_item' end
对于原始问题
assert_select
和assert_selector
与 html 标签<select>
无关。 就是这样。
对于那些为了assert_select
和assert_selector
之间的区别而来这里的人
assert_select
rails-dom-testing
gem 基于nokogiri
gem 提供的断言。responce
中的 DOM 元素。assert_selector
Capybara
gem 提供的断言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.