Estou fazendo o Tutorial do Rails pela segunda vez. Quando eu entro neste
rails generate integration_test static_pages
Eu recebo spec/rails_helper.rb
e em spec/spec_helper.rb
vez de apenasspec/spec_helper.rb
Agora, quando eu executo meus testes, eles são mais longos (mais "verbosos") e mais lentos do que da última vez. Estou me perguntando qual é a diferença entre os dois arquivos e se fiz algo errado. Além disso, existe uma maneira de se livrar do rails_helper.rb
arquivo sem bagunçar tudo?
ruby-on-rails
testing
rspec
rspec-rails
rspec3
user3417583
fonte
fonte
Respostas:
rspec-rails 3 gera
spec_helper.rb
erails_helper.rb
.spec_helper.rb
é para especificações que não dependem do Rails (como especificações para classes no diretório lib).rails_helper.rb
é para especificações que dependem do Rails (em um projeto Rails, a maioria ou todos eles).rails_helper.rb
requerspec_helper.rb
. Portanto, não, não se livrerails_helper.rb
; exigem (e nãospec_helper.rb
) em suas especificações.Se você deseja que suas especificações não dependentes de Rails garantam que elas não são dependentes de Rails e executem o mais rápido possível quando você as executa por si mesmas, você pode exigir
spec_helper.rb
ao invésrails_helper.rb
de nelas. Mas é muito conveniente para você,-r rails_helper
em.rspec
vez de exigir um auxiliar ou outro em cada arquivo de especificação, de modo que com certeza é uma abordagem popular.Se você estiver usando o spring preloader, cada classe só precisa ser carregada uma vez, e a spring carrega as classes avidamente, mesmo se você executar apenas uma única especificação que exige
spec_helper
, portanto, não há tanto valor em exigir apenasspec_helper
em alguns arquivos.Fonte: https://www.relishapp.com/rspec/rspec-rails/docs/upgrade#default-helper-files
fonte
Você sempre pode combinar todas as suas configurações no spec_helper e apenas requerer o spec helper no arquivo do helper do Rails.
Não é de forma alguma "ideal", já que no final do dia, você está fazendo esse "refatorar" manualmente, mas SE isso realmente o incomodar. apenas saiba que depende totalmente de você como estruturar o
Rspec.configure
e apenas trazer todas as configurações específicas dos trilhos
fonte