Eu acho que existe uma maneira de executar apenas testes com um determinado rótulo. Alguém sabe?
159
Não é fácil encontrar a documentação, mas você pode marcar exemplos com um hash. Por exemplo.
# spec/my_spec.rb
describe SomeContext do
it "won't run this" do
raise "never reached"
end
it "will run this", :focus => true do
1.should == 1
end
end
$ rspec --tag focus spec/my_spec.rb
Mais informações no GitHub . (qualquer pessoa com um link melhor, por favor, informe)
(atualizar)
O RSpec agora está soberbamente documentado aqui . Veja a seção de opções --tag para detalhes.
A partir da v2.6, esse tipo de tag pode ser expresso ainda mais simplesmente incluindo a opção de configuração treat_symbols_as_metadata_keys_with_true_values
, que permite:
describe "Awesome feature", :awesome do
onde :awesome
é tratado como se fosse :awesome => true
.
Consulte também esta resposta para saber como configurar o RSpec para executar automaticamente testes 'focados'. Isso funciona especialmente bem com o Guard .
:focus
, o que também impede que indesejáveis como 'binding.pry,
console.log`, etc. entrem na base de código.rspec
programa :) Porque o documento Relish não.Você pode executar todos os testes que contêm uma sequência específica com a opção --example (ou -e) :
Eu uso esse mais.
fonte
No seu
spec_helper.rb
:e depois nas suas especificações:
Você também pode focar testes com 'fit' ou excluir com 'xit', assim:
fonte
config.filter_run_when_matching
e que poderia trabalhar apenas adicionando:focus
ao exemploComo alternativa, você pode passar o número da linha:
rspec spec/my_spec.rb:75
- o número da linha pode apontar para uma única especificação ou um bloco de contexto / descrição (executando todas as especificações nesse bloco)fonte
Você também pode encadear vários números de linhas junto com dois pontos:
Resultado:
fonte
A partir de RSpec 2.4 (eu acho) você pode preceder um
f
oux
parait
,specify
,describe
econtext
:http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#fit-class_method http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#xit-class_method
Certifique-se de ter
config.filter_run focus: true
econfig.run_all_when_everything_filtered = true
no seuspec_helper.rb
.fonte
Nas versões mais recentes do RSpec, é ainda mais fácil configurar o suporte
fit
:Vejo:
https://relishapp.com/rspec/rspec-core/docs/filtering/filter-run-when-matching
https://relishapp.com/rspec/rspec-core/v/3-7/docs/configuration/run-all-when-everything-filtered
fonte
Além disso, você pode executar especificações que,
focus: true
por padrão,spec / spec_helper.rb
Então simplesmente execute
e apenas teste focado será executado
então quando você remover
focus: true
todos os testes, execute novamenteMais informações: https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inclusion-filters
fonte
spec/spec_helper.rb
sempre incluído? Ou apenas se nenhuma opção for dada? Por que os módulos de teste possuemrequire 'spec_helber'
e não possuem o código acima eliminam a possibilidade de executar um único teste especificando o arquivo? Não consigo encontrar nenhuma documentação sobre isso.spec_helper.rb
é sempre incluído se você tiver--require spec_helper
na.rspec
raiz do projeto.Você pode correr como
rspec spec/models/user_spec.rb -e "SomeContext won't run this"
.fonte