2017-06-19 3 views
0

Salut: J'ai été bloqué sur ce test en utilisant Capybara depuis quelques jours maintenant et je ne peux pas trouver une solution. Avoir une modification DOM à effectuer en utilisant AJAX, longue histoire courte:Capybara ne rend pas .js.erb

1) Mon événement ajax déclenche la demande avec succès:

$.ajax({ url: 'nice_url', data: data, complete: function() {debugger} 
}); 

2) Le contrôleur reçoit la demande très bien:

def update_dom 
<other stuff> 
    respond_to do |format| 
    format.js 
    end 
end 

3) IMPORTANT: le fichier update_dom.js.erb est correctement rendu dans l'environnement DEV mais PAS dans le test utilisant Capybara + RSpec.

update_dom.js.erb: 
debugger; //first line, breakopint no stopp in Test 
<% unless %W(boolean datetime).include?(@operators[:type])%> 
$.each($('.values'), function(i, valueField){ 
<other stuff, etc...> 

Ceci est en fait toute la question et se rendra compte des réflexions sur ce

+0

Utilisez-vous actuellement le pilote javascript pour exécuter ce test Capybara particulier? Sans cela, aucun javascript ne sera déclenché. Basique, mais juste pour être sûr! – TomD

+0

Bonjour, @TomD: merci pour votre commentaire. Je suppose que vous faites référence à l'option 'js: true', qui est là dans mon test, oui. – LegaTux

+0

pouvez-vous modifier votre message pour inclure votre rails_helper.rb et votre code de spécification? De plus, juste en y pensant, la déclaration du débogueur js arrête js avec les outils de débogage activés, pas tout à fait sûr que ceux-ci soient là dans les tests automatisés. Pourriez-vous essayer et dans js.erb changer le débogueur à quelque chose comme <% raise "Error"%> et voir si il commet des erreurs dans le test AND? – TomD

Répondre

0

J'ai eu une erreur sur mon dossier *.js.erb qui n'a pas été reflétée sur la trace de la pile de la console des développeurs. J'ai été capable de le déboguer en utilisant le guide suivant (utilisé firefox simple au lieu de firebug mais toujours travaillé): solution