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'
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.
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
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."
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.)
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