web-dev-qa-db-fra.com

Méthode de visite introuvable dans ma rspec

Mon Java s'exécute sur Tomcat à http: // localhost: 8080 /

Écriture de ma première spécification, 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

Je reçois:

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

Cela ne devrait-il pas fonctionner parce que j'ai inclus le capybara dans le spec_helper?

Comment saura-t-il visiter la bonne URL? que faire si mon URL est localhost: 3030 ou localhost: 8080?

Mon gemfile:

source 'http://rubygems.org'

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

Mon spec_helper:

require 'capybara/rspec'
52
Blankman

En ce qui concerne les problèmes rspec ( https://github.com/rspec/rspec-Rails/issues/36 )

tu devrais mettre

config.include Capybara::DSL

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

134
Erdem Gezer

Le répertoire par défaut qui Capybara::RSpec cherche maintenant à inclure le Capybara::DSL et Capybara::RSpecMatchers passe de requests à features.

Après avoir renommé mon répertoire requests en features, j'ai à nouveau disponible les méthodes matcher et DSL sans avoir à les inclure explicitement.

Voir ce qui suit commit

23
steve.clarke

Assurez-vous également que vos tests se trouvent dans le répertoire /spec/features . Selon rspec-Rails et capybara 2. , Capybara v2 et supérieur 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 des spécifications/demandes aux spécifications/fonctionnalités."

9
shadowbrush

Par défaut, le capybara DSL est inclus automatiquement si le fichier est dans les spécifications/demandes, les spécifications/l'intégration ou si le groupe d'exemples contient :type => :request.

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

6
Frederick Cheung

Vérifiez d'abord

Si vous ne réussissez pas,

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

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