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!!
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
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
+ FactoryBot
Gem
dans mon cas, require 'factory_bot'
ne fonctionne pas pour moi, lancez spring stop
, ça va. Version MacOS: 10.12.3