Pregunta

Estoy intentando configurar Factory Girl con Test :: Unidad y Shoulda en Ruby on Rails. He instalado la gema, creado mi archivo de fábrica bajo el directorio test / fábricas, y ha creado mi archivo de especificaciones bajo el directorio test / modelos. El error actual que estoy recibiendo es 'ArgumentError: No existe fábrica: Prueba', lo que me lleva a creer que el archivo test_factory.rb no se carga? Cualquier 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 
¿Fue útil?

Solución

Me he encontrado con este problema en uno de mis proyectos también. No estoy seguro exactamente lo que está causando el código de inicialización que se omita pero se puede forzar a cargar las definiciones de fábrica de esta manera:

require 'factory_girl'
Factory.find_definitions

Espero que esto ayude.

Otros consejos

Trate de poner esto en test_helper.rb:

require 'factory_girl'
Dir.glob(File.dirname(__FILE__) + "/factories/*").each do |factory|
  require factory
end

factory_girl_rails acaba de descubrir, donde pone la carga automática es la única cosa extra que tiene https://github.com/ thoughtbot / factory_girl_rails

Yo tenía el mismo problema. Con el tiempo me hizo hacer poniendo todos mis fábricas en "/test/factories.rb" y escribir las siguientes líneas en mi archivo "/test/test_helper.rb":

require 'factory_girl'
require File.dirname(__FILE__) + "/factories"

que podría hacer lo mismo para varios archivos, exigiéndoles en el test_helper. Todavía no he descubierto por qué la auto-incluye que se menciona en el readme "de factory_girl" no sucede.

También arreglé para deshacerse de este problema al poner esta línea en mi environment.rb:

config.gem "factory_girl", :source => "http://gemcutter.org"

Asegúrese también de que tiene la última joya:

Nombre cambiado de "thoughtbot-factory_girl" a "factory_girl", la fuente cambia de " http: //gems.github. com " a " http://gemcutter.org ".

En caso de que usted ha tenido este problema con el rubí 1.9.2, requiere espera que la ruta ampliada.

File.expand_path("test/factories.rb")

Esta parche resuelto mi problema. Acabo de enviar una solicitud de extracción. Después de que se puede añadir a su test_helper.rb:

require 'factory_girl'
FactoryGirl.find_definitions

Si sólo se requiere 'factory_girl' en test_helper.rb, me gustaría tener el mismo comportamiento que usted ha mencionado, sin embargo, si es necesario en mi config / test / environment.rb (tenga en cuenta que utilizo ecologista ) se encontraría adecuadamente la definición de fábrica sin ningún problema.

He intentado esto después de leer el rdoc chica de la fábrica donde dice que poner config.gem en su entorno.

También encontré con el problema - después de actualizar a 1.3.2 factorygirl -. Que las fábricas de prueba / fábricas no se cargan automáticamente más

Me podía deshacerse del problema añadiendo el código de la DG en test_helper.rb:

Dir.glob(File.dirname(__FILE__) + "/factories/*.rb").each do |factory|
 require factory
end

Al ejecutar pruebas individuales en Textmate, todo funcionaba bien, pero el funcionamiento, por ejemplo, todas las pruebas unitarias desde la línea de comandos usando la prueba de inclinación: unidades fallaron con un DuplicateDefinitionError (I leído que probablemente tiene algo que ver con el rubí 1.8.x). Así que poco cambiado el código:

if (!Factory.factories || Factory.factories.empty?)
  Dir.glob(File.dirname(__FILE__) + "/factories/*.rb").each do |factory|
    require factory
  end
end

Ha intentado mover el

require 'factory_girl'

para su prueba / test_helper.rb

El mecanismo de auto-carga de fábrica puede depender de que el requerir se llama. Podría estar tratando de encontrar fábricas de prueba * / modelos / fábricas / ** * en lugar de prueba / fábricas / **

En lugar de nombrar a su archivo test_factory.rb fábrica, tratar nombrarlo factory.rb

Interesante. Tenía un problema similar tratando de pepino para trabajar con factory_girl. Había configurado originalmente factory_girl que buscarlo ( 'config.gem'), pero no se ha cargado en el entorno de pepino y totalmente necesaria en 'características / soporte / env.rb', al igual que el pepino hace por webrat, etc, que sólo empezó a trabajar cuando me dijeron explícitamente factory_girl para encontrar sus definiciones como Kenny sugirió anteriormente.

Cuando quité la requieren comunicado de env.rb y factory_girl totalmente necesaria en el entorno de pepino, el efecto fue y factory_girl trabajó fuera de la caja.

Por lo que realmente parece ser una cuestión de cuándo (o en qué contexto) factory_girl que se carga.

Debido a que diferentes personas utilizan diferentes versiones de carriles (2.x y 3.x, siendo el más común ahora), es importante incluir las otras piezas pertinentes de su entorno (siendo los más importantes la versión de Rails' re sucesivamente). Desde la página web factory_girl, versión 1.3.0 documentación (http://rubydoc.info/gems/factory_girl/1.3.0/frames):

  

Si desea utilizar factory_girl con Rails 3, utilice el   factory_girl_rails joya, no éste.

     

Si desea utilizar factory_girl con versiones anteriores de Rails a Rails 3,   utilizar la versión 1.2.4.

Si tienes problemas con la carga, sugeriría asegurándose de que está utilizando la versión correcta. Las versiones de factory_girl superior a 1.2.4, Me asumir, son traídos como dependencias para los 'factory_girl_rails' (Rails 3.0 +) joya.

añadí require 'factory_girl' require File.dirname(FILE) + "/factories" a spec_helper.rb whiche ayudó, pero entonces yo recordábamos Spork veces puede ba un poco de un problema, así que reiniciado Spork sin la require y luego funcionó bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top