web-dev-qa-db-fra.com

Ruby Gem: constante FactoryBot non initialisée

Travailler sur une gemme Ruby et essayer d’utiliser FactoryBot à l’intérieur avec RSpec.

J'ai ceci dans support/factory_bot.rb:

RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods

  config.before(:suite) do
    FactoryBot.find_definitions
  end
end

et en spec_helper.rb:

require 'support/factory_bot'

Lorsque j'essaie d'exécuter la tâche de spécification, je reçois cette erreur:

support/factory_bot.rb:2:in `block in <top (required)>': uninitialized constant FactoryBot (NameError)

Qu'est-ce que je rate? Auparavant, cela fonctionnait bien lorsque j'utilisais l'ancienne gem factory_girl, mais le nom renommé est factory_bot. Merci!!

9
Bryan L.

Doh. Erreur silly ici, exécuter bundle exec rake spec au lieu de rake spec l'a résolu.

Il fallait aussi ajouter require 'factory_bot' en haut de support/factory_bot.rb

16
Bryan L.

Vue d'ensemble au cas où vous le feriez à partir de zéro

installation rspec details here (essentiellement, ajoutez gem à Gemfile puis exécutez bundle install)

initialiser RSPEC dans votre projet Rails Rails g rspec:install

créer un nouveau fichier votre spec/support/factory_bot.rb ajouter le code de base suivant:

require 'factory_bot'

RSpec.configure do |config|
    config.include FactoryBot::Syntax::Methods
end

# RSpec without Rails
RSpec.configure do |config|
    config.include FactoryBot::Syntax::Methods

    config.before(:suite) do
        FactoryBot.find_definitions
    end
end

ajouter une référence sur spec/Rails_helper.rb

require 'support/factory_bot'

ainsi que supprimer toute référence fixture inutilisée telle que celle-ci config.use_transactional_fixtures = true

Ça devrait être ça!, Enfin, lancez le fichier spec que vous voulez dans les dossiers par défaut de rspece.g.:spec/features/my_action_spec.rb

spec/models/my_model_spec.rb

spec/task/my_task_spec.rb 

ou exécutez-les tous et vérifiez en fonction de votre configuration

rspec

Rails rspec

bundle exec rspec

j'espère que cela aidera quelqu'un avec l'ensemble du processus d'installation RSPEC + FactoryBotGem

10
d1jhoni1b

dans mon cas, require 'factory_bot' ne fonctionne pas pour moi, lancez spring stop, ça va. Version MacOS: 10.12.3

0
Lucia