ruby-on-rails - rails 5.1.4 assert_select 'li',只检查第一个 li
问题描述
我正在通过 Rails 5.1 中的敏捷 Web 开发工作,我似乎遇到了测试问题。这本书说如果我有降价
<ul>
<li>Home</li>
<li>etc...</li>
</ul>
<ul>
<% @cart.line_items.each do |item| %>
<li>
<%= item.quantity %> × <%=
item.product.title %>
</li>
<% end %>
</ul>
我应该能写出这段文字
assert_select 'li', '1 \u00d7 Programming Ruby 1.9'
并让它返回:true,但它只检查第一个 li 元素,
Failure:LineItemsControllerTest#test_should_create_line_item [/Users/coreygibson/Documents/workspace/Depot/test/controllers/line_items_controller_test.rb:27]:
<1 \u00d7 Programming Ruby 1.9> expected but was
<Home>..
Expected 0 to be >= 1.
有没有解决这个问题的设置?还是我错过了什么?这本书说这应该有效。
解决方案
我不熟悉这本书,但从assert_select
docs来看,它听起来像预期的那样工作:
如果第一个参数是一个元素,则以深度优先顺序 选择从(包括)该元素及其所有子元素开始的所有匹配元素。(强调我的)
由于“Home”在一个单独的ul
父级中,我不确定,但我怀疑它找不到正确的li
. 试试这个:
assert_select 'ul' do
assert_select 'li', '1 \u00d7 Programming Ruby 1.9'
end
推荐阅读
- sql-server - 这些 SQL Server 过程并发安全吗?
- python - DEAP:按适应度对个体进行分类
- javascript - 如何验证变量是否是允许+/-的有效整数?在纯 JavaScript 中
- java - Java 通过引用传递构造函数
- string - 如何为自定义类型定义类型转换为字符串
- python - 如何在 matplotlib 中移动轴标签、移动子图和修改轴缩放
- reactjs - 使用 Formik 提交表单时无法读取 null 的属性“URL”
- dataframe - 根据 spark 数据框中的列值执行不同的计算
- scala - 清理 Akka Actor 获取的资源的最佳实践
- observable - Rxjava retryWhen 延迟不触发重试