2017-09-19 3 views
0

J'ai des spécifications de fonctionnalités dans mon projet qui ressemblent à peu près comme ceci:Rails 5.1: Rspec ne peut pas voir Capybara caractéristiques

# specs/features/canvas_integration.rb 
require 'spec_helper' 

feature 'Routes to default page' do 
    let!(:mode) { create(:mode) } 

    scenario 'as anyone' do 
    visit root_path 
    expect(page).to have_content('Your home') 
    end 
end 

Mais courir les spécifications résultats en rien:

rspec spec/features 
No examples found. 

Mon spec_helper.rb ressemble à ceci:

# frozen_string_literal: true 

require 'simplecov' 
SimpleCov.start 'rails' 
require File.expand_path('../../config/environment', __FILE__) 
require 'codeclimate-test-reporter' 
require 'rspec/rails' 
require 'webmock/rspec' 
require 'devise' 
require 'codeship' 
require 'capybara/rspec' 
require 'capybara/rails' 

WebMock.disable_net_connect!(allow_localhost: true) 
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f } 

RSpec.configure do |config| 
    config.include Devise::Test::ControllerHelpers, type: :controller 
    config.include Devise::Test::ControllerHelpers, type: :view 
    config.include FactoryGirl::Syntax::Methods 
    config.extend ControllerMacros, type: :controller 
    config.include Macros 

    config.color = true 
    config.fixture_path = "#{::Rails.root}/spec/factories/fixtures" 
    config.infer_spec_type_from_file_location! 
    config.infer_base_class_for_anonymous_controllers = false 
    config.order = 'random' 
    config.warnings = false 
    config.default_formatter = 'doc' if config.files_to_run.one? 
    config.profile_examples = 10 
    config.use_transactional_examples = false 
    config.use_transactional_fixtures = false 

    config.before(:suite) do 
    DatabaseCleaner.strategy = :transaction 
    DatabaseCleaner.clean_with(:truncation) 
    end 

    # config.before(:each, type: :system) { driven_by :rack_test } 

    config.mock_with :rspec do |mocks| 
    mocks.verify_doubled_constant_names = true 
    end 

    config.expect_with :rspec do |c| 
    c.syntax = :expect 
    end 
end 

Pourquoi ne peut Rspec trouver mes fonctions?

Répondre

1

Vos fichiers doivent se terminer par _spec.rb afin que RSpec les charge lors de la spécification d'un répertoire. Renommez specs/features/canvas_integration_spec.rb

Notez également que dans Rails 5.1, le nettoyage de la base de données n'est probablement pas nécessaire (si vous utilisez l'une des bases de données habituelles). Vous devriez donc pouvoir supprimer/commenter et réactiver les tests transactionnels . De plus, use_transactional_examples est un alias de use_transactional_fixtures, donc spécifier les deux n'a pas de sens.

+0

Oh wow, _thank-you_. J'adore un bon bug de mauvais nom de fichier. –

+1

@ CD-RUM De rien - J'ai également mis à jour avec un commentaire sur 'use_transactional_examples' –

+0

Doublement-utile. Merci tas. –

1

Je pense que votre nom de fichier de spécification de test doit être specs/features/canvas_integration_spec.rb au lieu de specs/features/canvas_integration.rb

Pourquoi?

Les fichiers lus par la gemme rspec-rails sont ceux qui se terminent par _spec.rb

+0

Oh, posté et juste rafraîchi pour remarquer que vous avez déjà une réponse :) – esther