test_helper test rails how asserts ruby-on-rails testing tdd

ruby-on-rails - how - test ruby on rails



¿Cómo iniciarse en TDD con Ruby on Rails? (7)

¿Qué artículo de Ruby on Rails TDD 101 debo leer?

Comenzaré con una guía para probar aplicaciones de rieles .

También Railscast tiene excelentes Railscast pantalla sobre cómo usar diferentes herramientas de prueba.

¿Qué necesito probar?

Empezaré con los modelos, ya que son fáciles de probar. La regla simple es que debe cubrir cada declaración if en su prueba.

Debe probar el propósito del método (para asegurarse de que esté funcionando como se espera) así como también todos los casos extremos.

También asegúrate de no terminar con las pruebas.

¿Qué gema / complemento debo usar? ¿Debo usar rspec? ¿Algo más?

Cuando comiences, solo usa Test Unit . Puede usar rspec o cucumber vez que se haya familiarizado con los conceptos básicos.

Autotest es una buena herramienta para tener si quieres ser realmente probado. Pero es un ''buen tener'' no requerido.

Una vez que tengo todas mis clases de prueba, ¿cómo voy a implementarlas?

No estoy seguro de la pregunta. Usualmente no implementa las pruebas. Una vez que tenga todas sus clases de prueba, simplemente escriba ''rake test'' para ejecutar todas sus pruebas.

¿Cuánto tiempo TDD realmente es?

Ahorra tiempo realmente. Si te gusta el rompecabezas laberinto, sabes que casi siempre es más fácil resolverlo si pasas de principio a fin. Lo mismo con TDD. Sin Test Driven, estás constantemente pensando "¿qué debo hacer ahora?". Con Test Driven, la prueba te dirá qué hacer a continuación (se rompe si la lógica no está allí, así que solo necesitas arreglar la parte rota). También tiene menos errores que le ahorrarán mucho tiempo a largo plazo.

¿Debo leer un libro sobre esto o puedo obtener todo simplemente jugando con él y leyendo tutoriales en línea? Si necesito leer un libro, ¿qué libro?

No necesitas un libro. La forma más eficiente de aprender algo es: solo hazlo. Vuelva al libro o recursos en línea una vez que encuentre una pregunta o problema. Esto también es ágil.

En su ejemplo, las cosas que necesitan pruebas son: Un contacto puede vincularse con 1 empresa. Una empresa puede tener múltiples contactos, crear formas de crear contactos y vincular contactos con empresas.

class CompanyTest <Test::Unit def test_relationship # test associations/relationships c = companies(:some_company) assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts end end class ContactTest<Test::Unit def test_relationships c = contact(:some_contact) assert_equal some_company, c.company # make sure the contact link to 1 company end def test_create/add # test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly end end

Estoy familiarizado con los conceptos (tomé clases de evaluación en la universidad), pero no estoy seguro de cómo usarlos realmente ya que nunca trabajé en un proyecto TDD "real".

Estoy por comenzar el desarrollo de un proyecto usando Ruby on Rails (lo más probable es que use 2.3). Esta aplicación se usará para administrar datos, usuarios y algunos archivos. No será demasiado complicado al principio, pero podría escalar mucho en los próximos 6 meses, así que creo que este es el momento adecuado para obtener más información sobre TDD.

Tengo una idea básica sobre cómo hacerlo, pero aún necesito algunos consejos y consejos:

  • ¿Qué artículo de Ruby on Rails TDD 101 debo leer?

  • ¿Qué necesito probar?

  • ¿Qué gema / complemento debo usar?

  • ¿Debo usar rspec ? ¿Algo más?

  • Una vez que tengo todas mis clases de prueba, ¿cómo voy a implementarlas? (Por ejemplo: Integración continua)

  • ¿Cuánto tiempo TDD realmente es?

  • ¿Debo leer un libro sobre esto o puedo obtener todo simplemente jugando con él y leyendo tutoriales en línea? Si necesito leer un libro, ¿qué libro?

Me gusta aprender con ejemplos para que alguien me diga cómo me gustaría ir y tomar un enfoque TDD para resolver este problema:

Tengo empresas. Tengo contactos. Un contacto puede estar vinculado a 1 compañía. Una empresa puede tener múltiples contactos. Quiero crear formas de crear contactos, empresas y vincular contactos con empresas.

No tiene que usar este ejemplo en su respuesta, pero sería útil :)


¿Qué gema / complemento debo usar?

Siempre me ha gustado tener.

¿Cuánto tiempo TDD realmente es?

La razón por la que siempre he favorecido el desarrollo de TDD es que se centra en cómo implementaré una pieza específica de código. Tengo la sensación anecdótica de que cada vez que me adhiero con más fuerza a los principios de TDD, paso menos tiempo retrabajándome más tarde. Sin embargo, la cantidad de tiempo invertido depende de qué tan bien escriba las pruebas unitarias. Si las pruebas de la unidad no capturan el comportamiento esperado, todo el tiempo que se gasta en ellas se desperdicia.


He producido una serie de videos de 6 episodios que se impartió como clase pública en San Francisco en el verano de 2010. El material cubre las pruebas y la eficiencia del desarrollador en Rails 2.3 utilizando RSpec 1.3. Ligeramente anticuado, pero los conceptos principales se aplican a Rails 3 con Rspec 2.x

http://www.rubyfocus.biz/class_video/2010/07/19/rails_tdd_class_1.html



Recomiendo este libro: Ruby on Rails Tutorial . Ya casi termino con eso. El libro usa TDD todo el libro. ¡Darle una oportunidad!


TDD se trata de escribir pruebas primero. Esto básicamente te obliga a escribir tu propio cliente antes de escribir el código de tu aplicación. El ciclo generalmente es escribir una prueba para una API que no existe, ejecutar la prueba esperando que falle, escribir el código de la API, ejecutar la prueba nuevamente y asegurarse de que pase. Luego escribe tu próxima prueba ... y así sucesivamente.

Puede que también te interese esta guía de Rails .