Articulo de referencia

Robot de fábrica (Pruebas de raíles)

Factory Bot , originalmente conocido como Factory Girl , [ 1 ] es una biblioteca de software para el lenguaje de programación Ruby que proporciona métodos de fábrica para crear ...

Factory Bot , originalmente conocido como Factory Girl , [ 1 ] es una biblioteca de software para el lenguaje de programación Ruby que proporciona métodos de fábrica para crear fixtures de prueba para pruebas de software automatizadas . Los objetos fixture se pueden crear sobre la marcha; pueden ser objetos Ruby simples con un estado predefinido, objetos ORM con registros de base de datos existentes u objetos mock .

Factory Bot se usa frecuentemente para probar aplicaciones Ruby on Rails , donde reemplaza el mecanismo de fixtures integrado de Rails. La configuración predeterminada de Rails usa una base de datos precargada como fixtures de prueba, que son globales para todo el conjunto de pruebas . Factory Bot, por otro lado, permite a los desarrolladores definir una configuración diferente para cada prueba y, por lo tanto, ayuda a evitar dependencias dentro del conjunto de pruebas. [ 2 ] [ 3 ]

Fábricas

Definición de fábricas

Una fábrica se define por un nombre y su conjunto de atributos. La clase del objeto de prueba se determina mediante el nombre de la fábrica o se establece explícitamente. [ 4 ]

FactoryBot.define do # Determinar la clase automáticamente factory :user do name { "Captain Minion" } superhero { false } end # Especificar la clase explícitamente factory :superhero , class : User do name { "Tony Stark" } superhero { true } end end

Características

Rasgos

Los rasgos permiten agrupar atributos que se pueden aplicar a cualquier fábrica. [ 4 ] [ 5 ]

fábrica :estado do título { "Buscando empleos a tiempo completo" } rasgo :internacional do internacional { verdadero } fin rasgo :residente do internacional { falso } fin rasgo :ingeniería computacional do ingeniería computacional { verdadero } fin rasgo :electricidad do ingeniería computacional { falso } fin fábrica :estudiante_internacional_ingeniería computacional , rasgos : [ :internacional , :ingeniería computacional ] fábrica :estudiante_residente_electricidad , rasgos : [ :residente , :electricidad ] fin

Alias

Factory Bot permite crear alias para fábricas existentes para que las fábricas puedan reutilizarse. [ 4 ]

fábrica :usuario , alias : [ :estudiante , :profesor ] hacer nombre { "John" } fin fábrica :aviso hacer profesor # Alias ​​usado ''profesor'' para ''usuario'' título { "Horario de oficina" } fin fábrica :notificación hacer estudiante # Alias ​​usado estudiante para usuario título { "Horarios de clase" } fin

Secuencias

Factory Bot permite crear valores únicos para un atributo de prueba en un formato determinado. [ 4 ]

FactoryBot.define do factory : title do sequence ( :name ) { | n | "Título #{ n } " } # Título 1, Título 2 y así sucesivamente... end end

Herencia

Al crear una fábrica para una clase, se pueden heredar atributos comunes de las fábricas principales, evitando así escribir código duplicado para atributos duplicados. Las fábricas se pueden estructurar de forma anidada para aprovechar la herencia.

fábrica :usuario hacer nombre { "Micheal" }fábrica :admin hacer admin_rights verdadero fin finadmin_user = crear ( :admin ) admin_user . nombre # Michael admin_user . derechos_administrador # verdadero

Las fábricas matrices también pueden especificarse explícitamente.

fábrica :usuario hacer nombre { "Micheal" } finfábrica :admin , padre : :user hacer admin_user { verdadero } fin

Llamar de vuelta

Factory Bot permite inyectar código personalizado en cuatro etapas diferentes: [ 4 ]

after(:build)
El código se puede inyectar después de que se haya construido la fábrica.
before(:create)
Se puede inyectar código antes de que se guarde la fábrica.
after(:create)
El código se puede inyectar después de que se guarde la fábrica.
after(:stub)
El código se puede inyectar antes de que se haya configurado la fábrica.

Véase también

Otras bibliotecas de prueba para Ruby

  • NullDB : una forma de acelerar las pruebas evitando el uso de bases de datos.
  • Fixture Builder : una herramienta que compila las fábricas de Ruby en fixtures antes de ejecutar una prueba.
  • Shoulda : una extensión para test/unit con funciones auxiliares, macros y aserciones adicionales.
  • Rspec : unmarco de desarrollo basado en el comportamiento
  • Capybara : Marco de pruebas de aceptación para aplicaciones web.

Referencias

  1. "Historial de nombres del proyecto" . github.com/thoughtbot/factory_bot .
  2. "Esperando a una FactoryGirl" . Blog de Thoughtbot .
  3. "Pruebas de Rails" . hiringthing.com .
  4. 1 2 3 4 5 "Primeros pasos" . rubydoc.info/gems/factory_bot .
  5. "Rasgos" . Blog de Thoughtbot .