2011-01-06 7 views
25

Estoy buscando una aplicación de código abierto bastante reciente que utiliza Rspec 2 como biblioteca de prueba. Me gustaría ver cómo un desarrollador experimentado utiliza la biblioteca de forma adecuada para probar la pila completa, ya que tengo dudas constantes sobre mi propio conocimiento (procedente de testunit y en parte debido a la escasa documentación de la última versión de Rspec, a pesar de que se mejora constantemente).Rieles: buen uso de ejemplo Rspec2? (También: pepino, pepinillo, carpincho)

Si un proyecto utilizara Pepino, Salmuera y/o Carpincho junto con Rspec 2, me haría saltar de alegría.

¿Alguna sugerencia?

¡Salud!

Respuesta

53

Mis 2 centavos:

Uso filete en lugar de pepino. Tiene RSpec en su núcleo, es simple y cumple su función.

https://github.com/cavalle/steak

Carpincho le permiten utilizar diferentes conductores. Algunos conductores soporta JavaScript, correr con un navegador, más rápido, más lento, etc. Utilice el mejor controlador para la especificación que se está probando el uso de Swinger:

https://github.com/jeffkreeftmeijer/swinger

uso mi propio tenedor de Akephalos - un conductor - el cual es rápido, admite Javascript, UTF-8 (eso es lo que agrega mi tenedor) y no necesita un navegador externo.

https://github.com/Nerian/akephalos2

Una buena práctica para RSpec es utilizar el 'contexto'. Pregúntame si necesitas una aclaración. Además, tome nota del método let. Devuelve lo que devuelve el bloque. Es útil para declarar un objeto simulado dentro y usarlo en las muestras. .

feature "Course" do 

    let(:school) {School.make!} 

    context "Loged in" do 
    before(:each) do 
     switch_to_subdomain(school) 
    end 

    context "In the new course form" do 
     before(:each) do 
     click_link("Courses") 
     click_link("New course") 
     end 

     scenario "New course" do    
     end 

     scenario "A Course without name should not be accepted" do 
     end 

     scenario "A new course should not be created if there is another one with the same name in the same school" do 
     end 
    end 
    end 
end 

Además, el libro: El libro RSpec, de programadores pragmáticos es un recurso muy bueno para iniciar mismo acerca de los conceptos básicos detrás de RSpec, capibara, pepino y todo esto Comportamiento Driven Development cosa ágil :)

Edit:

Además, utilizo Machinist2 para los accesorios. https://github.com/notahat/machinist

Funciona muy bien. Mejor que la chica de fábrica.

También hay fabricantes, que tienen un excelente sitio web y un DSL muy útil.

https://github.com/paulelliott/fabrication

Puede utilizar maquinista de falsificación con el fin de crear datos inteligentes.

https://github.com/sevenwire/forgery

School.blueprint do 
    name { "Pablo de olavide"} 
end 

Student.blueprint do 
    first_name { Forgery::Name.first_name} 
    last_name { Forgery::Name.last_name } 
    school { School.make! } 
end 

Esto se puede combinar con una tarea Thor con el fin de poblar la base de datos de desarrollo, para ver la aplicación que el usuario final sería verlo.

def populate   
    require File.expand_path('config/environment.rb') 
    require File.expand_path('spec/support/blueprints.rb')   
    drop 
    puts "populating database" 
    1.times do |num| 
     school = School.make! 
     50.times do 
     Student.make!(:school => school) 

     end            
    5.times do   
     Course.make!(:school => school)   
     Professor.make!(:school => school)     
     end    
    end 
end 

La documentación de RSpec 2 tiene muchos ejemplos:

http://relishapp.com/rspec

Además, este post dan muchos otros consejos:

http://eggsonbread.com/2010/03/28/my-rspec-best-practices-and-tips/

Otro post con muy buen consejo:

http://flux88.com/2011/05/dry-up-your-rspec-files-with-subject-let-blocks/

Optimizar el tiempo de ejecución de pruebas:

http://blog.leshill.org/blog/2011/10/23/fast-specs.html

http://jeffkreeftmeijer.com/2011/spec-helpers-bundler-setup-faster-rails-test-suites/

+0

Muchísimas gracias por la entrada! Actualmente estoy usando Factory Girl pero creo que podría darle una oportunidad a Machinist en un futuro cercano. – polarblau

+0

... He leído sobre Steak y parece más cercano a mi propio "estilo" (¿verdad?), Pero me gustaría usar Cucumber una vez en un proyecto completo para obtener una mejor impresión. También pensé en comprar el libro de RSpec, gracias por la pista, ¡creo que podría ir por eso! Y definitivamente voy a probar "contexto". Gracias de nuevo. - Sin embargo, ¿alguien con algún proyecto abierto podría echar un vistazo? – polarblau

+1

Verá, un lugar realmente bueno para ver las especificaciones de RSpec2 hechas por los maestros es el repositorio git RSpec2 mismo :) Pepino: https://github.com/dchelimsky/rspec/tree/master/features y RSpec; https://github.com/dchelimsky/rspec/tree/master/spec – Nerian

Cuestiones relacionadas