2017-04-13 2 views
0

Je construis mes tests d'intégrations, et je dois assurer qu'une balise HTML a un entier spécifique en tant que valeur, mais je reçois cette erreur:Comment faire pour assert_select dans un test d'intégration sélectionnez une classe css?

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' 

Voici mon avis:

<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> 

Ceci est mon test:

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 

Il semble que mon assert_select ne trouve pas correctement la balise HTML avec la classe css ressources comptage.

Merci d'avoir lu.

Répondre

1

Si vous utilisez capybara et que vous devez vérifier le contenu d'un élément que vous pouvez faire quelque chose comme:

assert page.has_css('.resources-count', text: "something") 

assert_select ne va pas travailler ici parce que vous créez un test d'intégration, pas un test de contrôleur .