2011-03-24 11 views
12

Estoy ejecutando pruebas de RSpec contra un producto de sitio web que existe en varios mercados diferentes. Cada mercado tiene combinaciones de características sutilmente diferentes, etc. Me gustaría poder escribir pruebas de manera que se omitan en el tiempo de ejecución según el mercado/entorno con el que se estén ejecutando. Las pruebas no deben fallar cuando se ejecutan en un mercado diferente, ni deben pasar; simplemente no son aplicables.Omitir un caso de prueba RSpec en tiempo de ejecución

Desafortunadamente, no parece haber una manera fácil de marcar una prueba como omitida. ¿Cómo voy a hacer esto sin intentar inyectar bloques "pendientes" (que de todos modos no son precisos?)

Respuesta

17

Use exclusion filters.

describe "market a", :market => 'a' do 
    ... 
end 
describe "market b", :market => 'b' do 
    ... 
end 
describe "market c", :market => 'c' do 
    ... 
end 

RSpec.configure do |c| 
    # Set these up programmatically; 
    # I'm not sure how you're defining which market is 'active' 
    c.filter_run_excluding :market => 'a' 
    c.filter_run_excluding :market => 'b' 
    # Now only tests with ":market => 'c'" will run. 
end 

O mejor aún, use implicit filters.

describe "market a", :if => CurrentMarket.a? do # or whatever 
    ... 
end 
+0

Los filtros implícitos parecen ser el camino a seguir. Me sorprende que no haya forma de que la prueba informe al formateador que fue excluido: / – andrewdotnich

Cuestiones relacionadas