J'essaie de faire fonctionner Factory Girl avec rspec dans mon Rails 4.1.1 app.
Le problème est que lorsque j'exécute rspec
dans ma ligne de commande, j'obtiens Failure/Error: verse = build(:verse) ArgumentError: Factory not registered: verse
.
Je suis perdu parce que j'ai vérifié la page de démarrage de Factory Girl et de nombreuses réponses ici sur SO et je ne peux toujours pas résoudre ce problème.
dans mon Gemfile:
gem 'Rails', '4.1.1'
group :development, :test do
gem 'rspec-Rails'
gem "factory_girl_Rails"
end
mon fichier spec_helper.rb:
require 'factory_girl_Rails'
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
end
spec/controllers/api/verses_controller_spec.rb
describe "API Controller" do
describe "show a verse" do
it "should return status 200" do
verse = build(:verse)
get :show, id: verse.id
expect(response).to have_http_status(200)
end
it "should return json object" do
verse = build(:verse)
get :show, id: verse.id
JSON.parse(response.body).should == {'id' => verse.id}
end
end
end
spec/usines/verses.rb
FactoryGirl.define do
factory :verse do
line1 "A beautiful verse I stand"
end
end
Pourquoi mon usine ne se charge-t-elle pas correctement? Les fichiers du dossier spec/factories sont censés être chargés automatiquement.
Il semble y avoir un problème lors de l'utilisation de rspec/factory girl avec ressort.
Ajouter:
config.before(:all) do
FactoryGirl.reload
end
dans mon spec_helper.rb a résolu le problème.
Crédit: https://github.com/Rails/spring/issues/88
Éditer:
Une autre façon de résoudre le problème consiste à indiquer manuellement à Factory Girl où charger l'usine. Ajoutez ceci dans votre spec_helper:
FactoryGirl.definition_file_paths = [File.expand_path('../factories', __FILE__)]
FactoryGirl.find_definitions
Cela semble être n problème avec Factory Bot . Je l'ai corrigé (selon le rapport de problème) avec FactoryBot.find_definitions
:
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
config.before do
FactoryBot.find_definitions
end
end
Ce n'est pas nécessairement dû au printemps. Il y a un problème qui signifie que factory_girl charge les chemins légèrement différents de rspec. La solution consiste à ajouter à Rails_helper les éléments suivants
FactoryGirl.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
FactoryGirl.find_definitions
en supposant que l'aide est à engine_root/spec.
Cela se produit lorsque vous utilisez rspec dans un moteur Rails.