2012-04-05 14 views

Respuesta

18

Tenemos grupos de la misma naturaleza. Ejecutamos uno por uno tanto en los cuadros de desarrollo local como en el CI.

puede simplemente hacer

bundle exec rake spec:unit 
bundle exec rake spec:integration 
bundle exec rake spec:api 

Esto es lo que se ve como nuestra spec.rake

namespace :spec do 
    RSpec::Core::RakeTask.new(:unit) do |t| 
     t.pattern = Dir['spec/*/**/*_spec.rb'].reject{ |f| f['/api/v1'] || f['/integration'] } 
    end 

    RSpec::Core::RakeTask.new(:api) do |t| 
     t.pattern = "spec/*/{api/v1}*/**/*_spec.rb" 
    end 

    RSpec::Core::RakeTask.new(:integration) do |t| 
     t.pattern = "spec/integration/**/*_spec.rb" 
    end 
    end 
+0

¡Eso es genial! pero ... agregué el archivo a mi lib/tasks, pero obteniendo errores: ¡rake abortado! constante no inicializada Rspec – simianarmy

+0

Es extraño, si tiene Rspec, debería tener que simplemente funcione para usted. – KensoDev

+0

Tuve que agregar rspec-core a Gemfile y agregar requerir 'rspec/core/rake_task' al archivo. Por extraño que sea, pensé que tener rspec-rails incluiría esas dependencias. – simianarmy

9

Una forma de hacerlo es etiquetar los casos de prueba RSpec así:

it "should do some integration test", :integration => true do 
    # something 
end 

Al ejecutar los casos de prueba usan este:

rspec . --tag integration 

Esto ejecutará todas las pruebas casos con la etiqueta :integration => true. Para obtener más información, consulte este page.

+0

Gracias. ¿Y hay una forma de excluir estos casos de 'integración' cuando se ejecuta el comando 'rspec' sin argumentos? – Evgenii

+1

rspec. --tag ~ integración. Si está usando zsh, entonces es un poco diferente: rspec. --tag "~ integeration" – Zsolt

+1

@Evgenii: También puede poner '--tag" ~ integration "' en su proyecto **. rpsec ** file. Este es mi enfoque preferido. Por supuesto, está anulado por las opciones que puede especificar explícitamente en la línea de comandos, por lo que aún tiene una flexibilidad completa. –

0

Aviso en https://github.com/rspec/rspec-rails, que están diciendo a colocar la gema en "grupo: el desarrollo, la: prueba "como tal,

group :development, :test do 
    gem 'rspec-rails', '~> 2.0' 
end 

pero si coloca esto solo en: grupo de prueba única,

group :test do 
    gem 'rspec-rails', '~> 2.0' 
end 

entonces obtendrá el error anterior.

HTH

+0

¿Qué error exactamente? –

1

tuve que configurar mis unit y feature pruebas de la siguiente manera:

require 'rspec/rails' 

namespace :spec do 
    RSpec::Core::RakeTask.new(:unit) do |t| 
    t.pattern = Dir['spec/*/**/*_spec.rb'].reject{ |f| f['/features'] } 
    end 

    RSpec::Core::RakeTask.new(:feature) do |t| 
    t.pattern = "spec/features/**/*_spec.rb" 
    end 
end 

tuvo que añadir y cambiar require 'rspec/rails'Rspec-RSpec en la respuesta dada por @KensoDev.

Cuestiones relacionadas