如何在集成测试中使 assert_select select 成为 css class?
How to make assert_select in a integration test select a css class?
我正在构建我的集成测试,我需要确保 HTML 标记具有特定整数作为值,但我收到此错误:
ReportsTest
test_report_shows_the_right_data_for_last_30_days ERROR (0.94s)
NoMethodError: NoMethodError: undefined method `content_type' for nil:NilClass
test/integration/reports_test.rb:15:in `block in <class:ReportsTest>'
test/test_helper.rb:45:in `instance_eval'
test/test_helper.rb:45:in `block in test'
这是我的观点:
<div class="panel panel-default report-summary">
<div class="panel-heading">
<h3 class="panel-title">Resumen</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-sm-4 summary-item">
<div class="summary-value resources-count"><%= @resources_count %></div>
<div class="summary-label">Recursos Publicados</div>
</div>
<div class="col-sm-4 summary-item">
<div class="summary-value"><%= @likes_count %></div>
<div class="summary-label">Likes</div>
</div>
<div class="col-sm-4 summary-item">
<div class="summary-value"><%= @searches_count %></div>
<div class="summary-label">Búsquedas</div>
</div>
</div>
<div class="row">
<div class="col-sm-4 summary-item">
<div class="summary-value"><%= @comments_count %></div>
<div class="summary-label">Comentarios</div>
</div>
<div class="col-sm-4 summary-item">
<div class="summary-value"><%= @views_count %></div>
<div class="summary-label">Vistas</div>
</div>
<div class="col-sm-4 summary-item">
<div class="summary-value"><%= @users.count %></div>
<div class="summary-label">Colaboradores</div>
</div>
</div>
</div>
</div>
这是我的测试:
require 'test_helper'
class ReportsTest < ActionDispatch::IntegrationTest
test 'show report without time range', subdomain: :mainco do
sign_in users(:juan)
visit reports_path
assert_equal 2, page.all(".report-resources table tbody tr").count
end
test 'report shows the right data for last 30 days', subdomain: :mainco do
sign_in users(:juan)
visit reports_path
knowledge_bases(:sales).resources.create!(user: users(:juan),
title: "JavaScript", type: "Discussion", created_at: 31.days.ago)
assert_select ".resources-count" do |elements|
elements.each do |element|
assert_equal element, 1
end
end
end
end
我的 assert_select 似乎没有正确找到具有 css class 资源计数的 HTML 标签。
感谢阅读。
如果您使用的是水豚并且需要检查元素的内容,您可以执行以下操作:
assert page.has_css?('.resources-count', text: "something")
assert_select
在这里不起作用,因为您正在创建集成测试,而不是控制器测试。
只需使用
assert_select '.resources-count', "1"
我正在构建我的集成测试,我需要确保 HTML 标记具有特定整数作为值,但我收到此错误:
ReportsTest
test_report_shows_the_right_data_for_last_30_days ERROR (0.94s)
NoMethodError: NoMethodError: undefined method `content_type' for nil:NilClass
test/integration/reports_test.rb:15:in `block in <class:ReportsTest>'
test/test_helper.rb:45:in `instance_eval'
test/test_helper.rb:45:in `block in test'
这是我的观点:
<div class="panel panel-default report-summary">
<div class="panel-heading">
<h3 class="panel-title">Resumen</h3>
</div>
<div class="panel-body">
<div class="row">
<div class="col-sm-4 summary-item">
<div class="summary-value resources-count"><%= @resources_count %></div>
<div class="summary-label">Recursos Publicados</div>
</div>
<div class="col-sm-4 summary-item">
<div class="summary-value"><%= @likes_count %></div>
<div class="summary-label">Likes</div>
</div>
<div class="col-sm-4 summary-item">
<div class="summary-value"><%= @searches_count %></div>
<div class="summary-label">Búsquedas</div>
</div>
</div>
<div class="row">
<div class="col-sm-4 summary-item">
<div class="summary-value"><%= @comments_count %></div>
<div class="summary-label">Comentarios</div>
</div>
<div class="col-sm-4 summary-item">
<div class="summary-value"><%= @views_count %></div>
<div class="summary-label">Vistas</div>
</div>
<div class="col-sm-4 summary-item">
<div class="summary-value"><%= @users.count %></div>
<div class="summary-label">Colaboradores</div>
</div>
</div>
</div>
</div>
这是我的测试:
require 'test_helper'
class ReportsTest < ActionDispatch::IntegrationTest
test 'show report without time range', subdomain: :mainco do
sign_in users(:juan)
visit reports_path
assert_equal 2, page.all(".report-resources table tbody tr").count
end
test 'report shows the right data for last 30 days', subdomain: :mainco do
sign_in users(:juan)
visit reports_path
knowledge_bases(:sales).resources.create!(user: users(:juan),
title: "JavaScript", type: "Discussion", created_at: 31.days.ago)
assert_select ".resources-count" do |elements|
elements.each do |element|
assert_equal element, 1
end
end
end
end
我的 assert_select 似乎没有正确找到具有 css class 资源计数的 HTML 标签。
感谢阅读。
如果您使用的是水豚并且需要检查元素的内容,您可以执行以下操作:
assert page.has_css?('.resources-count', text: "something")
assert_select
在这里不起作用,因为您正在创建集成测试,而不是控制器测试。
只需使用
assert_select '.resources-count', "1"