53 votes

Méthode de visite non trouvée dans ma rspec

Mon application web java est en cours d'exécution sur tomcat à http://localhost:8080/

L'écriture de mon premier spec, home_spec:

require 'spec_helper'


describe "home" do

    it "should render the home page" do
       visit "/"

       page.should have_content("hello world")
    end

end

Et en cours d'exécution:

rspec

J'obtiens:

F

Failures:

  1) home should render the home page
     Failure/Error: visit "/"
     NoMethodError:
       undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1:0x242870b7>
     # ./spec/home/home_spec.rb:7:in `(root)'

Finished in 0.012 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/home/home_spec.rb:6 # home should render the home page

Ne devrait-ce pas le travail parce que j'ai inclus capybara dans le spec_helper.rb?

Comment peut-elle savoir à visiter l'url est correcte? que faire si mon url localhost:3030 ou localhost:8080?

Mon gemfile:

source 'http://rubygems.org'

gem "activerecord"
gem "rspec"
gem "capybara"
gem "activerecord-jdbcmysql-adapter"

Mon spec_helper.rb:

require 'capybara/rspec'

135voto

egezer Points 1487

Concernant les problèmes rspec ( https://github.com/rspec/rspec-rails/issues/360 )

tu devrais mettre

 config.include Capybara::DSL
 

dans spec_helper.rb , à l'intérieur du bloc config.

23voto

steve.clarke Points 215

Le répertoire par défaut que Capybara::RSpec considère maintenant d'inclure les Capybara::DSL et Capybara::RSpecMatchers est modifié de requests à features .

Après avoir renommé mon répertoire requests en features les méthodes de correction et DSL sont à nouveau disponibles sans avoir à les inclure explicitement.

Voir le commit suivant

9voto

shadowbrush Points 101

Assurez-vous également que vos tests sont dans le répertoire / spec / features . Selon rspec-rails et capybara 2.0 , Capybara v2 et versions ultérieures ne seront pas disponibles par défaut dans les spécifications de demande RSpec. Ils suggèrent de "... déplacer tous les tests qui utilisent capybara de spec / request à spec / features."

6voto

Frederick Cheung Points 38410

Par défaut, capybara DSL est automatiquement inclus si le fichier est spécifié dans / spec, request / integration ou si le groupe de exemples contient :type => :request .

Parce que votre fichier est dans spec / home, les assistants capybara ne sont pas inclus. Vous pouvez également vous conformer à l’un des modèles ci-dessus ou ajouter include Capybara::DSL devrait également faire l'affaire (vous devrez peut-être également répliquer certains des éléments before(:each) qui seront configurés.)

1voto

endeR Points 485

D'abord vérifier

Si vous ne réussissez pas,

Ajoutez ce code à la fin de votre assistant de spécification hors du bloc RSpec.configure

 module ::RSpec::Core
  class ExampleGroup
    include Capybara::DSL
    include Capybara::RSpecMatchers
  end
end
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X