tutorial rails girl factorybot example create bot ruby-on-rails ruby-on-rails-4 rspec factory-bot

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