Eu tenho uma especificação de teste em que describes
uma classe e dentro dela tem vários, contexts
cada um com vários it
blocos.
Existe uma maneira de desativar context
temporariamente?
Eu tentei adicionar uma pending "temporarily disabled"
chamada bem no topo dentro de um context
desejo desabilitar, e eu vi algo sobre pendente quando executei a especificação, mas ele simplesmente continuou a executar o restante dos testes.
Isso é o que eu meio que tinha:
describe Something
context "some tests" do
it "should blah" do
true
end
end
context "some other tests" do
pending "temporarily disabled"
it "should do something destructive" do
blah
end
end
end
mas, como eu disse, ele apenas passou a executar os testes da chamada pendente.
Pesquisas me levaram a este tópico da lista de discussão em que o criador (?) Do rspec diz que é possível no rspec 2, que estou executando. Acho que funcionou, mas não teve o efeito desejado de desativar todos os testes a seguir, que é o que penso quando vejo uma pending
chamada.
Existe uma alternativa ou estou fazendo errado?
describe 'XXXXX' do .... end
describe 'XXXXX' do
. Funcionou como um encanto, obrigado @Pyro!Use filtros de exclusão . A partir dessa página: Em seu
spec_helper.rb
(ourails_helper.rb
)Em seu teste:
Quando executo "rspec ./spec/sample_spec.rb --format doc"
Então, a saída deve conter "grupo 2 exemplo 1"
E a saída não deve conter "grupo 1 exemplo 1"
E a saída não deve conter "grupo 1 exemplo 2"
fonte
Veja o que você acha disso:
Eu gosto de ver os motivos dos meus itens pendentes quando estou desabilitando algo por "um tempo". Eles servem como pequenos comentários / TODOs que são apresentados regularmente, em vez de incluídos em um comentário ou em um exemplo / arquivo excluído.
Alterar
it
parapending
ouxit
é rápido e fácil, mas prefiro a construção hash. Ele fornece a documentação de cada execução, é uma opção (não muda a descrição / contexto /, então eu tenho que decidir o que usar novamente mais tarde), e é facilmente removido se a decisão for tomada ou o bloqueador for removido .Isso funciona da mesma forma para grupos e exemplos individuais.
fonte
pending:
eskip:
, no rspec 3.6.0. Parece ser a melhor solução para mim. em rspec3 pendente ainda executa testes, masskip
não (no entanto você aplica oskip
).outro. https://gist.github.com/1300152
use xdescribe, xcontext, xit para desativá-lo.
Atualizar:
Desde rspec 2.11, ele inclui xit por padrão. então o novo código será
Uso
fonte
Use pendente em vez de descrever. Se o seu bloqueio for:
Você pode pular todo o bloco:
fonte
fonte
Apenas para explicar o que está acontecendo com seu código. Incluindo-o onde você o fez, ele apenas é avaliado (e, portanto, executado) quando o arquivo é carregado durante a inicialização. No entanto, você precisa que ele seja executado quando os testes forem executados. É por isso que as respostas sugeriram colocar
pending
(RSpec 2) ouskip
(RSpec 3) em umbefore
bloco.fonte