ruby-on-rails - matchers - install factory bot rails
Setup Factory Girl with Test:: Unidad y Shoulda (13)
Estoy intentando configurar Factory Girl with Test :: Unit y Shoulda en Ruby on Rails. He instalado la gema, he creado mi archivo de fábrica en el directorio de pruebas / fábricas y he creado mi archivo de especificaciones en el directorio de pruebas / modelos. El error actual que obtengo es ''ArgumentError: No hay tal fábrica: prueba'', lo que me hace creer que el archivo test_factory.rb no se está cargando. ¿Alguna idea de lo que debería cambiar?
Aquí están mis archivos.
#test/factories/test_factory.rb
Factory.define :test do |t|
t.name ''test_spotlight''
t.label ''test spotlight label''
end
y
#test/modes/test_spec.rb
require ''test_helper''
require ''factory_girl''
class TestTest < Test::Unit::TestCase
def setup
@test = Factory.build(:test)
end
context "A test" do
should "save with the minimum requirements" do
assert @test.save
end
end
end
¿Has intentado mover el
require ''factory_girl''
a su prueba / test_helper.rb ?
El mecanismo de carga automática de fábrica puede depender de dónde se llame el requerimiento. Podría estar intentando encontrar fábricas * test / models / factories / ** en lugar de * test / factories / **
Acabo de descubrir factory_girl_rails, donde dice que la carga automática es lo único que tiene https://github.com/thoughtbot/factory_girl_rails
Dado que diferentes personas están usando diferentes versiones de Rails (2.x y 3.x son las más comunes ahora), es importante incluir las otras piezas pertinentes de su entorno (la más importante es en qué versión de Rails está) . Desde la página web factory_girl, documentación de la versión 1.3.0 (http://rubydoc.info/gems/factory_girl/1.3.0/frames):
Si quieres usar factory_girl con Rails 3, usa la gema factory_girl_rails, no esta.
Si desea usar factory_girl con versiones de Rails anteriores a Rails 3, use la versión 1.2.4.
Si tiene problemas con la carga, le sugiero que se asegure de que está utilizando la versión correcta. Las versiones de factory_girl mayores que 1.2.4, supongo, se presentan como dependencias para la gema ''factory_girl_rails'' (Rails 3.0+).
En caso de que tuviera este problema con ruby 1.9.2, requiera esperar la ruta expandida.
File.expand_path("test/factories.rb")
Este patch solucionó mi problema. Acabo de enviar una solicitud de extracción. Después de eso, puede agregar esto a su test_helper.rb
:
require ''factory_girl''
FactoryGirl.find_definitions
En lugar de nombrar su archivo de fábrica test_factory.rb, intente nombrarlo factory.rb
Intenta poner esto en test_helper.rb:
require ''factory_girl''
Dir.glob(File.dirname(__FILE__) + "/factories/*").each do |factory|
require factory
end
Interesante. Tuve un problema similar al tratar de hacer que pepino trabajara con factory_girl. Originalmente había configurado factory_girl para buscar (''config.gem'') pero no estaba cargado en el entorno de cucumber y era completamente obligatorio en ''features / support / env.rb'', igual que cucumber para webrat, etc. Eso solo comenzó a trabajo cuando le dije explícitamente a factory_girl que encontrara sus definiciones como Kenny sugirió anteriormente.
Cuando eliminé la declaración de requerimiento de env.rb y requerí totalmente factory_girl en el entorno de cucumber, el efecto desapareció y factory_girl funcionó fuera de la caja.
Así que realmente parece ser una cuestión de cuándo (o en qué contexto) se carga factory_girl.
Me he encontrado con este problema en uno de mis proyectos también. No estoy seguro de qué es exactamente lo que hace que se omita el código de inicialización, pero puede forzar la carga de las definiciones de fábrica de esta manera:
require ''factory_girl''
Factory.find_definitions
Espero que esto ayude.
Si solo requiriera ''factory_girl'' en test_helper.rb, obtendría el mismo comportamiento que usted mencionó, pero si lo requiriera en mi config / test / environment.rb (tenga en cuenta que uso environmentalist ) encontraría correctamente la definición de fábrica sin ningún problema.
Intenté esto después de leer el archivo rdoc de Factory Girl donde se le indica que ponga config.gem en su entorno.
También logré deshacerme de este problema al poner esta línea en mi entorno.rb:
config.gem "factory_girl", :source => "http://gemcutter.org"
Asegúrate también de tener la última gema:
El nombre cambió de "thoughtbot-factory_girl" a "factory_girl", la fuente cambió de " http://gems.github.com " a " http://gemcutter.org ".
También me encontré con el problema, después de actualizar FactoryGirl a 1.3.2, que las fábricas de prueba / fábricas ya no se cargaban automáticamente.
Podría deshacerme del problema agregando el código de dg a test_helper.rb:
Dir.glob(File.dirname(__FILE__) + "/factories/*.rb").each do |factory|
require factory
end
Cuando se ejecutan pruebas individuales en Textmate, todo funcionó bien, pero se ejecutaron, por ejemplo, todas las pruebas unitarias desde la línea de comandos utilizando la prueba rake: las unidades fallaron con un DuplicateDefinitionError (leí que probablemente tenga algo que ver con ruby 1.8.x). Así que cambié un poco el código:
if (!Factory.factories || Factory.factories.empty?)
Dir.glob(File.dirname(__FILE__) + "/factories/*.rb").each do |factory|
require factory
end
end
Yo tuve el mismo problema. Finalmente, logré hacerlo poniendo todas mis fábricas en "/test/factories.rb" y escribiendo las siguientes líneas en mi archivo "/test/test_helper.rb":
require ''factory_girl''
require File.dirname(__FILE__) + "/factories"
podría hacer lo mismo para varios archivos solicitándolos en el test_helper. Todavía no he descubierto por qué no se produce la inclusión automática que se menciona en el archivo readme de "factory_girl''s".
require ''factory_girl'' require File.dirname( FILE ) + "/factories"
a spec_helper.rb que me ayudó, pero luego recordé que Spork a veces puede ser un poco problemático, así que reinicié Spork sin el require
y luego funcionó multa.