Rspec-core: Anidado Antes/Alrededor Ejecutar En Orden Extraño

Creado en 22 may. 2018  ·  6Comentarios  ·  Fuente: rspec/rspec-core

Asunto del problema

Si tiene un bloque de descripción con un antes (: cada uno) y luego anida un bloque de descripción con un alrededor (: cada uno), el alrededor (: cada uno) se ejecuta antes del antes (: cada uno). Hubiera pensado que around(:each) es solo una buena manera de escribir before(:each) after(:each) y compartir algún estado entre ellos. pero debido a la forma en que around(:each) siempre se ejecuta antes de before(:each), incluso si está anidado más abajo, hace que around(:each) sea mucho menos útil.

no parece haber un caso de prueba para este comportamiento en la documentación, por lo que no estoy seguro de si esto fue deliberado o no. sin embargo, supongo que sería difícil cambiar este comportamiento porque probablemente mucha gente confía en él.

https://relishapp.com/rspec/rspec-core/v/2-0/docs/hooks/around-hooks#before/after (:each)-hooks-are-wrapped-by-the-around-hooks

tu entorno

  • Versión Rubí: 2.4.0
  • versión rspec-core: 3.7

pasos para reproducir

describe "filter" do

  before(:each) do
    puts "before each outer"
  end

  describe "inner" do
    around(:each) do |example|
      puts "around each inner"
      example.run
    end

    it "should" do
      puts "example"
    end
  end

end

real:

around each inner
before each outer
example

previsto:

before each outer
around each inner
example

así es como funciona si ambos están antes (: cada uno) en lugar de usar un alrededor (: cada uno) para el interior.

describe "filter" do

  before(:each) do
    puts "before each outer"
  end

  describe "inner" do
    before(:each) do
      puts "before each inner"
    end

    it "should" do
      puts "example"
    end
  end

end
before each outer
before each inner
example

Comentario más útil

Cerrando por ahora, ya que se han agregado documentos adicionales, el posible reordenamiento se puede ver más adelante.

Todos 6 comentarios

Verificado, esto es un poco extraño, al menos deberíamos documentar el orden en el que esperamos que se ejecute, creo que al menos alrededor de los ganchos deberían ejecutarse después de antes cuando se definen en un contexto interno

Entonces, creo que esta sería una buena solución para RSpec 4. ¡Es un poco raro, de hecho!

Me gustaría intentarlo, ¿estaría dispuesto a aceptar una PR para RSpec 4?

Sí, para RSpec 4, recomendaría desarrollarlo como una característica opcional, y finalmente necesitaremos una forma de advertir sobre el cambio de comportamiento.

Me parece un buen plan! ¡A ver si encuentro algo de tiempo para trabajar en ello!

Cerrando por ahora, ya que se han agregado documentos adicionales, el posible reordenamiento se puede ver más adelante.

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