Rspec-core: Múltiples tipos de especificaciones en metadatos

Creado en 24 oct. 2016  ·  3Comentarios  ·  Fuente: rspec/rspec-core

Me gustaría definir varios tipos de especificaciones para los metadatos, pero actualmente no es posible.

Me gustaría definir cosas como:

config.when_first_matching_example_defined(types: %i(feature request)) do
  # enable db support only for feature or request specs
  require 'support/db'
end

# include these Helpers only into feature or request specs
config.include(Helpers, types: %i(feature request))

Actualmente tengo que duplicar las definiciones.

config.when_first_matching_example_defined(types: :feature) do
  require 'support/db'
end

config.when_first_matching_example_defined(types: :request) do
  require 'support/db'
end

config.include(Helpers, type: :feature)
config.include(Helpers, type: :request)

Comentario más útil

No creo que la solución anterior mejore la legibilidad y en spec/rails_helper . Alguna solución de una sola línea sería genial para estos casos. No creo, soy el único que apreciaría algo lo que propuse.

Todos 3 comentarios

Puedes hacerlo:

%i(feature request).each do |type|
  config.when_first_matching_example_defined(type: type) do
    # enable db support only for feature or request specs
    require 'support/db'
  end

  # include these Helpers only into feature or request specs
  config.include(Helpers, type: type)
end

Dado lo fácil que es hacerlo con un ciclo simple, no veo una razón para que agreguemos soporte para lo que está solicitando, particularmente porque sería una forma muy implícita y confusa de que los metadatos coincidan, en mi opinión. .

No creo que la solución anterior mejore la legibilidad y en spec/rails_helper . Alguna solución de una sola línea sería genial para estos casos. No creo, soy el único que apreciaría algo lo que propuse.

Dado que actualmente tratamos los valores de los metadatos como valores simples, sería realmente confuso comenzar a darles un significado especial, ¡sin mencionar que son ambiguos!

¿Fue útil esta página
0 / 5 - 0 calificaciones