ruby - tests - ¿Cómo ignorar u omitir un método de prueba usando RSpec?
run spec rails (6)
por favor guía cómo desactivar uno de los métodos de prueba a continuación utilizando RSpec. Estoy usando combinaciones de Selenuim WebDriver + RSpec para ejecutar pruebas.
require ''rspec''
require ''selenium-webdriver''
describe ''Automation System'' do
before(:each) do
###
end
after(:each) do
@driver.quit
end
it ''Test01'' do
#positive test case
end
it ''Test02'' do
#negative test case
end
end
Aquí hay una solución alternativa para ignorar (omitir) el método de prueba anterior (por ejemplo, Test01
) del script de muestra.
describe ''Automation System'' do
# some code here
it ''Test01'' do
skip "is skipped" do
###CODE###
end
end
it ''Test02'' do
###CODE###
end
end
Hay dos formas de evitar que un bloque específico de código se ejecute durante la prueba.
Ejemplo: Usar xit en lugar de eso.
it "redirects to the index page on success" do
visit "/events"
end
Cambie el bloque de código anterior a continuación.
xit "redirects to the index page on success" do #Adding x before it will skip this test.
visit "/event"
end
Segunda forma: llamando al pendiente dentro del bloque. Ejemplo:
it "should redirects to the index page on success" do
pending #this will be skipped
visit "/events"
end
Hay una serie de alternativas para esto. Marcado principalmente como pending
u skipped
y existe una diferencia sutil entre ellos. De los documentos
Un ejemplo puede marcarse como omitido, en el que no se ejecuta o pendiente en el que se ejecuta, pero el error no provocará un error en todo el conjunto.
Consulte los documentos aquí:
Otra forma de saltear pruebas:
# feature test
scenario ''having js driver enabled'', skip: true do
expect(page).to have_content ''a very slow test''
end
# controller spec
it ''renders a view very slow'', skip: true do
expect(response).to be_very_slow
end
fuente: documentación de rspec 3.4
Pending y skip son agradables, pero siempre he usado esto para bloques de descripción / contexto más grandes que necesitaba ignorar / omitir.
describe Foo do
describe ''#bar'' do
it ''should do something'' do
...
end
it ''should do something else'' do
...
end
end
end if false
Puede usar pending()
o cambiarlo a xit
o wrap assert en el bloque pendiente para la implementación de espera:
describe ''Automation System'' do
# some code here
it ''Test01'' do
pending("is implemented but waiting")
end
it ''Test02'' do
# or without message
pending
end
pending do
"string".reverse.should == "gnirts"
end
xit ''Test03'' do
true.should be(true)
end
end