ruby-on-rails - girl - install factory bot rails
ArgumentError: Fábrica no registrada (3)
Estoy intentando que Factory Girl funcione con rspec en mi aplicación Rails 4.1.1.
El problema es cuando ejecuto rspec
en mi línea de comando, obtengo Failure/Error: verse = build(:verse) ArgumentError: Factory not registered: verse
.
Estoy perdido porque revisé la página de inicio de la chica de la fábrica y muchas respuestas aquí en SO y aún no puedo solucionar este problema.
en mi Gemfile:
gem ''rails'', ''4.1.1''
group :development, :test do
gem ''rspec-rails''
gem "factory_girl_rails"
end
mi archivo 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 / factories / verses.rb
FactoryGirl.define do
factory :verse do
line1 "A beautiful verse I stand"
end
end
¿Por qué mi fábrica no se carga correctamente? Los archivos en la carpeta de especificaciones / fábricas deben cargarse automáticamente.
Esto no es necesariamente causado por la primavera. Hay un issue que significa que factory_girl carga las rutas ligeramente diferentes de rspec. La solución es agregar al rails_helper lo siguiente
FactoryGirl.definition_file_paths << File.join(File.dirname(__FILE__), ''factories'')
FactoryGirl.find_definitions
asumiendo que el ayudante está en engine_root / spec.
Esto ocurre cuando está utilizando rspec en un motor de rieles.
Esto parece ser un problema con Factory Bot . Lo arreglé (según el informe de problemas) con FactoryBot.find_definitions
:
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
config.before do
FactoryBot.find_definitions
end
end
Parece que hay un problema al usar rspec / factory girl con spring.
Añadiendo:
config.before(:all) do
FactoryGirl.reload
end
en mi spec_helper.rb solucionó el problema.
Crédito: github.com/rails/spring/issues/88
Editar:
Otra forma de solucionar el problema es decirle manualmente a Factory Girl dónde cargar la fábrica. Agregue esto en su spec_helper:
FactoryGirl.definition_file_paths = [File.expand_path(''../factories'', __FILE__)]
FactoryGirl.find_definitions