Cómo probar en el track de Ruby

Aprende a probar tus ejercicios de Ruby en Exercism


Ejecutar los tests

Ejecuta los tests con:

$ ruby hamming_test.rb

Solo se ejecutará el primer test; todos los demás se han dejado pendientes con el método skip. Elimina o comenta el siguiente skip a medida que vayas consiguiendo que pase cada test.

Entender los skips

El método skip indica al conjunto de tests que no ejecute un test. Se usa habitualmente para evitar ejecutar tests de funcionalidades sin implementar, de modo que puedas centrarte en la parte en la que estás trabajando ahora mismo.

El resumen de la ejecución de los tests mostrará el número de tests omitidos. Deberías desactivar todos los skips antes de completar un ejercicio.

Personalizar los informes de los tests

Si quieres color, ejecuta los tests con:

$ ruby hamming_test.rb -p

Si quieres ver los nombres de los tests, ejecuta los tests con:

$ ruby hamming_tests.rb -v

Si quieres ejecutar solo un test, puedes especificar uno o un grupo con una coincidencia al estilo de las expresiones regulares.

$ ruby hamming_tests.rb -n /empty/

También puedes combinar las opciones.

Desactivar todos los skips

Ahora que tienes el nuevo poder de poder seleccionar los tests individuales o los grupos de tests que quieres ejecutar, puede que te apetezca desactivar todos los skips.

La forma rápida y chapucera

Aprovechando que en Ruby los métodos se pueden sobrescribir, si añadieras esta línea de código:

def skip ; end

tal que así en el fichero de test de Hamming

class HammingTest < Minitest::Test
  def skip ; end
  def test_identical_strands

entonces todos los skips se seguirán evaluando, pero dejarán que tus tests se ejecuten.

La forma igual de rápida pero más limpia

Claro que editar todos los ficheros cada vez puede resultar molesto, así que puedes hacer lo mismo que hicimos nosotros al desarrollar los ejercicios: crear un fichero que contenga la definición de skip y requerirlo como librería cuando lo necesitemos.

Creamos una carpeta lib para guardar nuestras cosas «helper», y tiene este aspecto:

require 'minitest/autorun'
# You can use this to disable all skips in the current exercise by issuing the
# following command:
#     ruby -I../lib -rdisable_skip <filename_test.rb>

module Minitest
  class Test
    def skip(_msg='', _bt=caller)
    end
  end
end

La descripción de cómo usarlo está comentada en ese listado de fichero, y el listado del fichero está en su estado completo.