2008-10-17 4 views
15

Hay una docena de complementos de Rails cuyo objetivo es reemplazar luminarias en las pruebas. Aquí están algunos que puedo pensar:¿Complemento de sustitución de dispositivo preferido en Rails?

  • reemplazo accesorio
  • Factory Girl
  • fábricas y trabajadores
  • carriles escenarios
  • accesorio-escenarios
  • objeto padre

Probablemente haya otros. ¿Cuál de estos complementos prefieres y por qué?

Respuesta

6

Yo personalmente uso Faker con una clase personalizada de fábrica. Esto me permite crear mis fábricas y poblar las instancias generadas con datos no estáticos.

# spec/factory.rb 
module Factory 
    def self.create_offer(options={}) 
    Offer.create({ 
     :code => Faker::Lorem.words(1), 
     :expires_on => Time.now + (rand(30) + 1).day 
    }.merge(options)) 
    end 
end 


# spec_helper.rb 
require 'faker' 
require 'spec/factory' 


# In the specs 
@offer = Factory.create_offer(:code => 'TESTING') 
3

+1 Factory Girl

+0

votaron por "chica" – DFectuoso

3

Acabamos de empezar el uso de Factory Girl para nuestros proyectos. Su forma de hacer las cosas no era muy diferente de nuestra solución local, por lo que funciona bien para nosotros.

4

Abogo por Fixture Replacement 2. Sus atributos de modelo predeterminados (no se preocupan) se almacenan en un solo lugar, db/example_data.rb, y proporcionan objetos válidos rápidamente. Cualquier atributo que especifique al crear sobrescribe los atributos predeterminados, es decir, los datos sobre los que se refieren es en la prueba, y nada más.

Sus datos de ejemplo también pueden referirse a otros modelos predeterminados, que están representados por procesos con evaluación diferida, por lo que puede anular asociaciones fácilmente cuando lo desee.

La versión 2 proporciona un formato de definición mucho más limpio, al tiempo que proporciona los métodos mágicos new_*, create_*, and default_* para cada modelo.

Evitaría cualquier tipo de esquema de "escenarios" que fomente la construcción de más y más datos de prueba que son difíciles de leer más adelante. Puede crear objetos con nombre (personalizados) con FR2, pero nunca lo he encontrado necesario.

P.S. Asegúrese de tener en cuenta también su estrategia de prueba de la unidad : los dispositivos y todos sus análogos son objetos reales que llegan a la base de datos, lo que los convierte en pruebas funcionales o de integración. Actualmente estoy usando la burla de RSpec junto con stub_model() y la última joya unit_record para no permitir el acceso a la base de datos.

2

He estado jugando con machinist últimamente y estoy cavando.

3

Soy un gran admirador de la fábrica cuando solo necesita uno o algunos objetos. Puedes escribir el tuyo o usar Thoughtbot's Factory Girl.

Para las situaciones en las que necesita un conjunto de objetos interrelacionados, los accesorios vencen de fábrica, y debe echar un vistazo a la excelente Lite Fixtures que hace los accesorios considerablemente más secos y manejables.

0

Factory Girl is great. Lo usamos en cargas de trabajo.

Factory.define :usa, :class => Team do |f| 
    f.country_name 'USA' 
    f.rank   15.6 
end 

Factory.define :player do |f| 
    f.first_name 'Stevie' 
    f.last_name 'Wonder' 
    f.team  Factory.build(:usa) 
end 

Luego, en sus especificaciones que se puede utilizar Factory.build(:usa) o Factory.create(:usa) para construir o crear un equipo de EE.UU., respectivamente.

4

También le puedo dar a Factory Girl uno más. La forma en que puede asociarse entre fábricas múltiples es realmente útil cuando tienes un conjunto de modelos algo normal. Un proyecto tiene un gerente de proyecto, por ejemplo.

Factory.define :project_manager do |f| 
    f.first_name "John" 
    f.last_name "Doe" 
end 

Factory.define :project do |f| 
    f.name "Sample Project" 
    f.association :project_manager 
end 

De esta manera, no tiene que preocuparse por la configuración de las relaciones en cada prueba. También puede hacer un trabajo como Faker, donde puedes construir datos de muestra en fábricas usando Factory.sequence. Para toda la información sobre Factory Girl, visita: http://dev.thoughtbot.com/factory_girl/.

Cuestiones relacionadas