我正在构建我的集成测试,我需要确保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类resources-count的HTML标记。
感谢阅读。
答案 0 :(得分:2)
如果您正在使用水豚并且需要检查元素的内容,您可以执行以下操作:
assert page.has_css('.resources-count', text: "something")
assert_select
不会在这里工作,因为您正在创建集成测试,而不是控制器测试。
答案 1 :(得分:0)
只需使用
assert_select '.resources-count', "1"