0

Je suis Rails 5.1 et d'essai utilisant le système par défaut Permet de testerTypeError avec assert_text dans capybara Rails 5.1

J'ai le code suivant dans un RetreatTest de classe:

test "Create a new Retreat" do 
    visit retreats_url 

    click_on 'Create a new Retreat' 

    fill_in "Title", with: "Retreat Title" 
    fill_in "Tagline", with: "Retreat tagline" 
    select('Individual', from: 'Type') 

    fill_in "Description", with: "Retreat Description" 
    attach_file('Image', Rails.root.join('test', 'images', 'test-1.jpg')) 

    click_on "Submit" 

    assert_text("Retreat was successfully saved.") 
end 

Je ne comprends pas pourquoi Je continue à obtenir cette erreur:

Error: 
RetreatsTest#test_Create_a_new_Retreat: 
TypeError: exception class/object expected 
test/system/retreats_test.rb:36:in `block in <class:RetreatsTest>' 

Si j'écris assert find('.alert').has_content?('Retreat was successfully saved.') au lieu de assert_text tous mes tests passent.

Quelqu'un peut-il m'aider?

modifier 1: sur l'exécution du test avec l'option Backtrace, je reçois le texte suivant:

Error: 
    RetreatsTest#test_Create_a_new_Retreat: 
    TypeError: exception class/object expected 
    /Users/dhaliman/.rvm/gems/ruby-2.3.1/gems/capybara-2.14.2/lib/capybara/minitest.rb:52:in `raise' 
    /Users/dhaliman/.rvm/gems/ruby-2.3.1/gems/capybara-2.14.2/lib/capybara/minitest.rb:52:in `rescue in assert_text' 
    /Users/dhaliman/.rvm/gems/ruby-2.3.1/gems/capybara-2.14.2/lib/capybara/minitest.rb:48:in `assert_text' 
    /Users/dhaliman/Code/Workspace AVR WebApp/avr/test/system/retreats_test.rb:36:in `block in <class:RetreatsTest>' 
+0

Avez-vous plus de la stacktrace pour l'erreur afin que nous puissions voir exactement quelle version de 'assert_text' est appelée? –

+0

Comment faire une trace de pile dans un test système? Une idée? – dhaliman

+0

Puisqu'il s'agit d'une erreur et non d'une exception d'échec de test, vous pouvez essayer d'exécuter vos tests avec l'option: verbose ou: backtrace - 'rails test -b test' –

Répondre

1

Mise à jour vers la dernière Capybara (2.14.4) Vous utilisez actuellement 2.14.2 et il y avait un correctif dans 2.14.3 pour le mini test assert qui devrait corriger l'erreur incorrecte, et l'a renvoyer l'erreur correcte (qu'il ne peut pas trouver le texte)