Je n'arrive pas à faire fonctionner capybara avec rspec. Il me donne cette erreur :
méthode non définie `visit' pour #
Je sais qu'il y a beaucoup de posts à ce sujet mais aucune des solutions ne fonctionnent pour moi. La plupart d'entre elles impliquent que les spécifications ne se trouvent pas dans /spec/features - ce qui est mon cas.
Tout d'abord l'erreur:
$bundle exec rspec spec
F
Échecs:
1) les signes de sécurité utilisateurs
Failure/Error: visit "/sessions/new"
NoMethodError:
méthode non définie `visit' pour #
# ./spec/features/security_spec.rb:4:in `(root)'
Terminé en 0.006 secondes
1 exemple, 1 échec
Exemples en échec:
rspec ./spec/features/security_spec.rb:3 # security signs users in
Je pense qu'il est important de noter qu'au début j'utilisais l'assistant d'URL 'new_sessions_path' et cela me donnait une erreur variable locale ou méthode 'new_sessions_path' non définie
. Je sais que c'est valide car :
$ rake routes
logout_sessions GET /sessions/logout(.:format) sessions#logout
sessions POST /sessions(.:format) sessions#create
new_sessions GET /sessions/new(.:format) sessions#new
contracts POST /contracts(.:format) contracts#create
new_contracts GET /contracts/new(.:format) contracts#new
edit_contracts GET /contracts/edit(.:format) contracts#edit
GET /contracts(.:format) contracts#show
PUT /contracts(.:format) contracts#update
DELETE /contracts(.:format) contracts#destroy
root / contracts#index
Mon Gemfile :
source 'https://rubygems.org'
gem 'rails', '3.2.11'
gem 'execjs'
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'activerecord-oracle_enhanced-adapter', '~> 1.4.1'
gem 'jruby-openssl'
gem 'therubyrhino'
gem 'kaminari'
gem 'nokogiri'
group :development do
gem 'warbler'
end
group :test do
gem 'rspec-rails'
gem 'capybara'
gem 'activerecord-jdbcsqlite3-adapter'
end
spec_helper.rb à l'intérieur de my_app/spec:
# Ce fichier est copié dans spec/ lorsque vous exécutez 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
# Intégration Capybara
require 'capybara/rspec'
require 'capybara/rails'
# Nécessite des fichiers ruby de support avec des matchers et des macros personnalisés, etc,
# dans le dossier spec/support/ et ses sous-dossiers.
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
# Supprimer cette ligne si vous n'utilisez pas de fixtures ActiveRecord ou ActiveRecord
# config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
config.order = "aléatoire"
# Inclure les assistants de chemin
config.include Rails.application.routes.url_helpers
end
my_app/spec/features/security_spec.rb:
décrire "sécurité", :type => :feature do
il "connecte les utilisateurs" do
visit "/sessions/new"
fill_in "nom d'utilisateur", :with => "utilisateur"
fill_in "mot de passe", :with => "pass"
click_button "Se connecter"
page.should have_content('Connexion réussie')
end
end
J'ai essayé de définir le test ci-dessus avec et sans :type => :feature
. Cela ne fait aucune différence. Des idées sur ce que je devrais essayer ensuite ?
0 votes
Possible duplicate de Capybara : méthode 'visit' non définie
2 votes
@mlt dans le premier paragraphe, j'ai dit : "Je sais qu'il y a beaucoup de publications à ce sujet, mais aucune des solutions ne fonctionne pour moi. La plupart d'entre elles impliquent que les spécifications ne se trouvent pas dans /spec/features - ce qui est le cas pour moi." Ce paragraphe fait référence spécifiquement à la question à laquelle vous avez ajouté un lien. Cette question non seulement a plus de votes, mais elle est également accompagnée d'une solution - qui est différente de la réponse la plus votée (et non la solution) publiée sur la question à laquelle vous avez ajouté un lien.